So zeigen Sie die Zusammenfassung (Teaser) über dem Körper in einer vollständigen Inhaltsansicht an

11

Ich möchte oben in jedem Artikel unter dem Titel einen Teaser anzeigen, wie im folgenden Layout mit vollständigem Inhalt:

  1. Titel
  2. Teaser (Artikelzusammenfassung)
  3. Bild
  4. Körper

Außerdem sollte der Teaser eine eigene Formatierung haben (zum Beispiel kursiv und eine größere Schrift).

Ich habe keine Möglichkeit gefunden, dies zu tun, ohne tpl-Dateien oder Kerndateien zu bearbeiten.

Eine Lösung wäre, meinem Inhaltstyp ein neues Feld "article_teaser" hinzuzufügen und dann die Anzeige zu verwalten, um mein Layout in der Ansicht "Vollständiger Inhalt" zu erhalten. Dies funktioniert, aber ich möchte nicht zwei Teaser-Felder in meinem Eingabeinhaltsformular haben, da ich zweimal den gleichen Text eingeben sollte.

Es scheint, dass ich den Feldkörper nicht in seine Teile "Text" und "Zusammenfassung" aufteilen kann, aber ich kann nur den einen oder anderen anzeigen, aber nicht beide!

Gibt es eine Möglichkeit (ein Modul?), Das zu tun?

(Meine Umgebung: Drupal 7 mit Zen-Unterthema.)

Gingo
quelle

Antworten:

10

Sie können dies mit Ansichten tun. Erstellen Sie eine Ansicht, die die Pfade für Ihren Inhaltstyp überschreibt. Stellen Sie die Anzeige auf Felder und fügen Sie das Körperfeld zweimal hinzu. Stellen Sie die erste Instanz ein, um den Teaser anzuzeigen, und die zweite Instanz, um den Body anzuzeigen. Sie können die Bilder dazwischen hinzufügen. Mit Ansichten können Sie auch das CSS der Teaser- / Body-Felder einfach anpassen (standardmäßig bietet Ansichten eine Reihe von Klassen und Sie können bei Bedarf zusätzliche Klassen hinzufügen).

Als Referenz: Node One-Serie von Video-Screencasts zur Verwendung von Ansichten

Patrick Kenny
quelle
Vielen Dank. Der Link ist sehr nützlich und ich lerne viel über Ansichten: Ich habe eine Ansicht, die das Zeug gemacht hat. Ansichten zeigen jedoch eine Liste von Knoten an, während mein Inhaltstyp (eine Buchseite) eine einzelne Seite ist: Wie kann ich eine einzelne Buchseite (einen Knoten) mit einer Liste von Knoten (der von mir erstellten Ansicht) überschreiben? Mir fehlt wahrscheinlich etwas über Ansichten, vielleicht wie man die Standardbuchseite mit einer eigenen überschreibt.
Gingo
@gingo Um alle Buchseiten zu überschreiben, müssen Sie den Ansichtspfad auf spezielle Weise konfigurieren. Ein Beispiel finden Sie in der Taxonomie-Begriffsansicht , die standardmäßig von Ansichten bereitgestellt wird (deaktiviert). Der Pfad ist auf gesetzt /taxonomy/term/%; Wenn Sie diese Ansicht bearbeiten, können Sie sehen, wie die Argumente (Kontextfilter) eingezogen werden, damit Sie die Anzeige für Taxonomiebegriffe bearbeiten können. Sie können etwas Ähnliches für Buchseiten auf Ihrer Site einrichten.
Patrick Kenny
Nun, ich muss tiefer in Kontextfilter schauen, aber ich denke, ich bin auf dem richtigen Weg. Danke.
Gingo
3

Ansichten können definitiv den Job machen. Aber ich denke, es ist ein bisschen übertrieben für diese Anforderung.

Eine andere Möglichkeit, dies zu erreichen, besteht darin, hook_field_extra_fields () und hook_node_view () in Ihrem benutzerdefinierten Modul zu implementieren.

/**
 * 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,  
    );
  }
}

Leeren Sie den Cache und Sie können zu den Einstellungen für den Inhaltstyp "Anzeige verwalten" wechseln, um das Feld "Body Summary" per Drag & Drop zu platzieren. Zum Beispiel admin/structure/types/manage/page/display.

eric.chenchao
quelle
Hm ich denke das ist nah, aber der Feldinhalt wird nicht angezeigt, nur Array.
Arjan
Hey @arjan, haben Sie die Array-Daten überprüft und bitte hier kopiert?
eric.chenchao
Was
bringt
Hi @Kiee, du hast recht. Aber dieses Snippet wird als Beispiel mit Kommentar verwendet;)
eric.chenchao
3

auf drupal 7:

Im Feld Body können Sie 'Ergebnis umschreiben' verwenden und in den 'Ersatzmustern' Folgendes verwenden:

[body-summary]

und dies zeigt die vollständige Zusammenfassung an.

Javier Eduardo
quelle
Du bist ein Genie Javier, all die anderen übertriebenen Erklärungen, deine ist die, die bei weitem am besten funktioniert und sooooooooooooo einfach!
Bruno Vincent
0

Für die Neudefinition von Inhaltstypen müssen Sie sich Panels ansehen, da eine der Funktionen von Panels darin besteht, das grundlegende Erscheinungsbild bestimmter Inhaltstypen (oder Informationen, die auf anderen Auswahlkriterien basieren) Csaba genau neu zu definieren

Csaba
quelle
0

Wie Arjan bemerkte, erzeugt das Cityreader-Snippet das Ergebnis, wird aber nicht richtig gerendert.

Diese Variante hat bei mir funktioniert:

 /**
 * 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['#items'][0]['safe_summary'],
      '#weight' => 0,  
    );
  }
}
Mike Juic3
quelle
0

Wenn Sie an einer No-Code-Lösung mit dem Modul Views and Display Suite interessiert sind , können Sie:

  1. Block "Ansichten erstellen" mit einem Zusammenfassungsfeld. Unter Kontextfilteroption in den erweiterten Einstellungen können Sie die Option "Standardwert bereitstellen" mit dem Typ "Inhalts-ID von URL" festlegen.

  2. Wählen Sie unter Inhaltstypen -> [Ihr Inhaltstyp] -> Anzeige verwalten die Option Benutzerdefinierte Felder (Menü unten) und erstellen Sie ein benutzerdefiniertes Blockfeld aus der in Schritt 1 erstellten Ansicht.

  3. Beim Speichern wird das Feld Benutzerdefiniert in der Liste der Knotentypfelder angezeigt, in der Sie auswählen können, in welcher Region es angezeigt werden soll.

user1795440
quelle