Jak wyświetlić podsumowanie (zwiastun) nad ciałem w widoku pełnej zawartości

11

Chcę wyświetlić zwiastun na górze każdego artykułu pod tytułem, jak w następującym układzie „pełnej zawartości”:

  1. Tytuł
  2. Teaser (streszczenie artykułu)
  3. Wizerunek
  4. Ciało

Ponadto zwiastun powinien mieć własne formatowanie (na przykład kursywa i większa czcionka)

Nie znalazłem żadnego sposobu, aby to zrobić bez edycji plików tpl lub podstawowych plików.

Rozwiązaniem byłoby dodanie nowego pola „article_teaser” do mojego typu treści, a następnie zarządzanie wyświetlaniem, aby uzyskać mój układ w widoku „Pełna treść”. To działa, ale nie lubię mieć dwóch pól zwiastuna w formularzu treści wejściowej, ponieważ powinienem wpisać dwa razy ten sam tekst.

Wygląda na to, że nie mogę podzielić ciała pola na części „tekstową” i „podsumowującą”, ale mogę wyświetlić tylko jedną lub drugą, ale nie obie!

Czy jest jakiś sposób (moduł?), Aby to zrobić?

(Moje środowisko: Drupal 7 z podtematem Zen).

gingo
źródło

Odpowiedzi:

10

Możesz to zrobić za pomocą Widoku. Utwórz widok, który przesłania ścieżki dla Twojego typu zawartości. Ustaw wyświetlanie na Pola, a następnie dwukrotnie dodaj pole treści; ustaw pierwszą instancję, aby wyświetlała zwiastun, a drugą instancję, aby wyświetlała treść. Możesz dodać obrazy pomiędzy. Widoki umożliwią również łatwe dostosowanie CSS pól zwiastuna / treści (domyślnie Widoki zapewniają wiele klas, aw razie potrzeby można dodać dodatkowe klasy).

Dla odniesienia: Węzeł Jedna seria screencastów na temat korzystania z widoków

Patrick Kenny
źródło
Dziękuję Ci bardzo. Link jest bardzo przydatny i uczę się dużo o widokach: mam widok, który zrobił wszystko. Ale widoki pokazują listę węzłów, a mój typ zawartości (strona książki) to pojedyncza strona: jak mogę zastąpić pojedynczą stronę książki (węzeł) listą węzłów (utworzony widok)? Prawdopodobnie brakuje mi czegoś na temat wyświetleń, być może jak zastąpić domyślną stronę książki własną.
gingo
@gingo Aby zastąpić wszystkie strony książki, musisz w specjalny sposób skonfigurować ścieżkę widoku. Na przykład spójrz na widok terminu Taksonomia , który jest domyślnie udostępniany przez Widoki (wyłączony). Ścieżka jest ustawiona na /taxonomy/term/%; jeśli edytujesz ten widok, możesz zobaczyć, w jaki sposób argumenty (filtry kontekstowe) są pobierane, aby umożliwić edycję wyświetlania dla terminów taksonomicznych. Możesz ustawić coś podobnego dla stron książek w swojej witrynie.
Patrick Kenny,
Cóż, muszę zagłębić się w filtry kontekstowe, ale myślę, że jestem na dobrej drodze. Dziękuję Ci.
gingo
3

Widoki z pewnością wykonają zadanie. Ale myślę, że dla tego wymogu jest to trochę przesada.

Innym sposobem na osiągnięcie tego jest zaimplementowanie hook_field_extra_fields () i hook_node_view () w module niestandardowym.

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

Wyczyść pamięć podręczną i możesz przejść do ustawień typu „Zarządzaj wyświetlaniem”, aby przeciągnąć i upuścić, aby umieścić pole „podsumowanie treści”. Na przykład admin/structure/types/manage/page/display.

eric.chenchao
źródło
Hm, myślę, że jest blisko, ale zawartość pola się nie wyświetla, tylko Array.
arjan
Hej @arjan, czy sprawdziłeś dane Array i skopiowałeś je tutaj?
eric.chenchao
Jaki jest sens tworzenia zmiennej, 1 linia powyżej jedynego używanego miejsca, wystarczy wpisać ciąg w instrukcji if
Kiee
Cześć @Kiee, masz rację. Ale ten fragment jest używany jako przykład z komentarzem;)
eric.chenchao
3

na drupal 7:

W polu Treść możesz użyć „przepisać wynik” i użyć w „wzorcach zastępczych”:

[body-summary]

i to wyświetli pełne podsumowanie.

javier eduardo
źródło
Jesteś genialnym Javierem, wszystkie inne wyjaśnienia dotyczące nadmiernych umiejętności, twoje jest tym, które działa najlepiej jak dotąd i bardzo proste!
Bruno Vincent
0

W celu redefinicji typu treści należy spojrzeć na panele, ponieważ jedną z funkcji paneli jest dokładnie zdefiniowanie podstawowego wyglądu niektórych typów treści (lub informacji opartych na innych kryteriach wyboru) Csaba

Csaba
źródło
0

Jak zauważył Arjan, fragment Cityreadera daje wynik, ale nie renderuje się poprawnie.

Ta odmiana zadziałała dla mnie:

 /**
 * 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
źródło
0

Jeśli interesuje Cię rozwiązanie bez kodu, wykorzystujące moduł Views and Display Suite , możesz:

  1. Utwórz blok widoków z polem podsumowania. W opcji Filtr kontekstowy w ustawieniach zaawansowanych możesz ustawić opcję „Podaj wartość domyślną” z typem Content ID z adresu URL.

  2. W obszarze Typy treści -> [typ zawartości] -> Zarządzaj wyświetlaniem wybierz opcję Pola niestandardowe (menu u dołu) i utwórz pole bloku niestandardowego z widoku utworzonego w kroku 1.

  3. Podczas zapisywania Niestandardowe pole pojawi się na liście pól typu węzła, gdzie możesz wybrać, w którym regionie ma się pojawić.

użytkownik1795440
źródło