it-swarm-eu.dev

Jak zobrazit souhrn (upoutávku) na těle v úplném zobrazení obsahu

Chci zobrazit ukázku v horní části každého článku pod nadpisem, jako v následujícím rozložení „úplného obsahu“:

  1. Titul
  2. Teaser (shrnutí článku)
  3. Obraz
  4. Tělo

Ukázka by navíc měla mít vlastní formátování (například kurzíva a větší písmo)

Nenašel jsem žádný způsob, jak toho dosáhnout, aniž bych upravoval soubory tpl nebo základní soubory.

Řešením by bylo přidat do mého typu obsahu nové pole „article_teaser“ a poté spravovat zobrazení, aby se mé rozložení dostalo do zobrazení „Celý obsah“. Funguje to, ale nemám rád ve svém vstupním obsahu dvě pole s upoutávkami, protože bych měl napsat dvakrát stejný text.

Zdá se, že tělo pole nemůžu rozdělit na část „text“ a „souhrn“, ale mohu zobrazit pouze jednu nebo druhou, ale ne obojí!

Existuje nějaký způsob (modul?), Jak toho dosáhnout?

(Moje prostředí: Drupal 7 s dílčím tématem Zen.)

11
gingo

Můžete to udělat pomocí Zobrazení. Vytvořte pohled, který přepíše cesty pro váš typ obsahu. Nastavte zobrazení na pole a poté dvakrát přidejte pole těla; nastavit první instanci k zobrazení ukázky a druhou instanci k zobrazení těla. Obrázky můžete přidat mezi. Pohledy také umožňují snadno přizpůsobit CSS polí teaser/body (ve výchozím nastavení poskytuje pohled řadu tříd a v případě potřeby můžete přidat další třídy).

Pro informaci: zel Jedna řada videonahrávek při použití Zobrazení

10
Patrick Kenny

on drupal 7:

V poli Tělo můžete použít 'přepsat výsledek' a použít v 'náhradních vzorcích' toto:

[body-summary]

a tím se zobrazí úplné shrnutí.

3
javier eduardo

Názory rozhodně dokážou tuto práci. Ale myslím, že je to trochu nadměrné pro tento požadavek.

Dalším způsobem, jak toho dosáhnout, je implementace hook_field_extra_fields () a hook_node_view () do vašeho vlastního modulu.

/**
 * Implements hook_field_extra_fields().
 */
function mymodule_field_extra_fields() {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  $extra['node'][$content_type]['display']['body_summary'] = array(
    'label' => t('Body summary'),
    'description' => t('Display body summary.'),
    'weight' => 0,
  );

  return $extra;
}

/**
 * Implements hook_node_view().
 */
function mymodule_node_view($node, $view_mode, $langcode) {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  if ($node->type == $content_type) {
    $summary = field_view_field('node', $node, 'body', array(
      'type' => 'text_summary_or_trimmed',
    ));

    $node->content['body_summary'] = array(
      '#markup' => $summary,
      '#weight' => 0,  
    );
  }
}

Vymažte mezipaměť a můžete přejít do nastavení typu obsahu „Spravovat zobrazení“ a přetažením umístit pole „shrnutí těla“. Například admin/structure/types/manage/page/display.

3
eric.chenchao

Pokud vás zajímá řešení bez kódu pomocí pohledů a modul Suite Suite , můžete:

  1. Vytvořte blok Zobrazení se souhrnným polem. V části Možnost Kontextový filtr v pokročilém nastavení můžete nastavit možnost Poskytnout výchozí hodnotu s typem Content ID z adresy URL.

  2. V části Typy obsahu -> [váš typ obsahu] -> Spravovat zobrazení vyberte možnost Vlastní pole (nabídka dole) a vytvořte pole Vlastní blok z pohledu vytvořeného v kroku 1.

  3. Při uložení se v seznamu polí typu typů uzlů objeví vlastní pole, kde si můžete vybrat, ve které oblasti se bude zobrazovat.

0
user1795440

Pro redefinici typu obsahu je třeba se podívat na panely, protože jednou z funkcí panelů je přesně předefinování základního vzhledu určitých typů obsahu (nebo informací založených na jiných kritériích výběru).

0
Csaba