Як відобразити підсумок (тизер) над тілом у повному перегляді вмісту


11

Я хочу відобразити тизер у верхній частині кожної статті під заголовком, як у наступному макеті «Повний вміст»:

  1. Назва
  2. Тізер (резюме статті)
  3. Зображення
  4. Тіло

Крім того, тизер повинен мати власне форматування (наприклад, курсивом та більшим шрифтом)

Я не знайшов способу зробити це без редагування tpl-файлів чи основних файлів.

Рішенням було б додати нове поле "article_teaser" до мого типу вмісту, а потім керувати дисплеєм, щоб отримати мій макет у вигляді "Повний вміст". Це працює, але мені не подобається, щоб у моїй формі введення вмісту було два поля тизера, тому що я повинен два рази вводити один і той же текст.

Здається, я не можу розділити тіло поля на його «текст» та «підсумок», але я можу відображати лише одну чи іншу, але не обидві!

Чи є спосіб (модуль?) Зробити це?

(Моє середовище: Drupal 7 із підкатегорією Zen.)

Відповіді:


10

Це можна зробити за допомогою Views. Створіть подання, яке перекриває шляхи для вашого типу вмісту. Встановіть дисплей у поля, а потім двічі додайте поле тіла; встановіть перший екземпляр для відображення тизера, а другий екземпляр для відображення тіла. Можна додавати зображення між ними. Перегляди також дозволять легко налаштувати CSS полів тизера / тіла (за замовчуванням у програмі Views передбачено ряд класів, а при необхідності можна додати додаткові класи).

Для довідки: Вузол Один ряд відеоекранів із використанням функцій Views


Велике спасибі. Посилання дуже корисне, і я багато дізнаюсь про погляди: я зрозумів, що це робив. Але в представленнях відображається список вузлів, тоді як мій тип вмісту (сторінка книги) - це одна сторінка: як я можу замінити одну сторінку книги (вузол) зі списком вузлів (створений мною перегляд)? Мені, напевно, щось не вистачає про перегляди, можливо, як замінити стандартну сторінку книги за власною.
гінго

@gingo Щоб змінити всі сторінки книг, вам потрібно налаштувати шлях перегляду спеціальним чином. Для прикладу подивіться представлення терміна « Таксономія» , яке надається Переглядами за замовчуванням (вимкнено). Шлях встановлений на /taxonomy/term/%; якщо ви відредагуєте цей погляд, ви зможете побачити, як втягуються аргументи (контекстні фільтри), щоб ви могли редагувати відображення для термінів таксономії. Ви можете встановити щось подібне для сторінок книг на своєму сайті.
Патрік Кенні

добре, я мушу заглянути в контекстні фільтри глибше, але я думаю, що я на вірному шляху. Дякую.
гінго

3

Погляди, безумовно, можуть зробити цю роботу. Але я думаю, що для цієї вимоги є трохи зайвим.

Ще один спосіб досягти цього - це реалізувати у вашому користувальницькому модулі гак_field_extra_fields () та гак_node_view ().

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

Очистіть кеш, і перейдіть до налаштувань типу вмісту "Керувати дисплеєм", щоб перетягнути та розмістити поле "Зведення тіла". Наприклад admin/structure/types/manage/page/display.


Гм, я думаю, це близько, але вміст поля не відображається, просто Array.
arjan

Привіт @arjan, ви перевірили дані масиву та скопіювали їх тут, будь ласка?
eric.chenchao

Який сенс у створенні змінної, на 1 рядок вище єдиного місця, де вона використовується, просто покладіть рядок у оператор if
Kiee

Привіт @Kiee, ти маєш рацію. Але цей фрагмент використовується як приклад із коментарем;)
eric.chenchao

3

на drupal 7:

У полі Body ви можете скористатися 'переписати результат' та використовувати в 'шаблонах заміни' це:

[body-summary]

і це відобразить повний підсумок.


Ви геніальний Хав’єр, усі інші пояснення надмірності, ваші - це той, хто працює найкраще на сьогоднішній день, і sooooooooooooo просто!
Бруно Вінсент

0

Щоб визначити тип вмісту, вам потрібно переглянути Панелі, оскільки одна з функцій Панелі точно переосмислює базовий вигляд певних типів вмісту (або інформації, заснованої на інших критеріях вибору) Csaba


0

Як Арджан помітив, фрагмент Cityreader дає результат, але він не відображається належним чином.

Цей варіант працював для мене:

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

0

Якщо вас цікавить рішення без коду за допомогою модуля Views і Display Suite, ви можете:

  1. Створіть блок "Перегляди" з полем зведення. У розділі Параметр контекстного фільтра в розширених налаштуваннях ви можете встановити параметр "Надати значення за замовчуванням" з типом Content ID з URL-адреси.

  2. У розділі Типи вмісту -> [тип вашого вмісту] -> Керування дисплеєм виберіть параметр "Спеціальні поля" (меню внизу) та створіть поле "Користувацький блок" у створеному Вами кроці 1.

  3. При збереженні Спеціальне поле відобразиться у списку полів вузла, де ви можете вибрати, у якому регіоні воно буде відображатися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.