Созадние списка взаимосвязанных материалов (related post, content)

Опубликовано admin - вт, 09/24/2019 - 20:00

Ни одна статья не обойдётся без списка взаимосвязанных материалов. В Drupal 8 это сделать не очень просто, несмотря на наличие модуля представлений, поэтому я постараюсь объяснить это подробно и с изображениями.

Для начала зайдите в раздел представлений "/admin/structure/views":

Взаимосвязанные материалы в Drupal 8

Далее выберите создать новое представление или отредактируйте существующие.

Представление - это класс Drupal для универсальльного вывода информации из базы данных, основанных на различном содержимом. Его использование предназначено для быстрой настройки вывода различных данных, без использования знаний sql,php.


 

взаимсовязанные материалы

  • Основные моменты на которых необходимо остановить внимание - это три пункта:
  • 1. Подраздел "Контекстные фильтры";
  • 2. Подраздел "Поля";
  • 3. Подраздел "Критерии сортировки";
 

При этом самым важным является пункт номер один. В нем нужно указать связь "Контекстный фильтр: Редакция Термин таксономии: ID термина".

Drupal 8 интерестно  Обязательными элементами являются:

  • 1. Загрузить фильтр по умолчанию со страницы термина;
  • 2. Загрузить фильтр по умолчанию со страницы материала;
  • 3. Ограничить термины словарем;
 

Контекстный фильтр: Термин таксономии: ID термина практически все делает для создания взаимоcвязаных материалов. Остальные два пункты подраздел "Поля, подраздел "Критерии сортировки", второстепенны. Они не представляют сложностей, поэтому Вы можете добавить нужные Вам значения самостоятельно. Я добавили пять полей:

  • 1. Глобальный: Счетчик результатов (№)
  • 2. Содержимое: Title
  • 3. Содержимое: Время создания
  • 4. Содержимое: Body
  • 5. Содержимое: Ссылка на Содержимое

Данный набор оптимален для меня. Дополнительные поля не понадобились. В критериях сортировки указано "Содержимое: Время создания (убыв.)".

Сохраните указанные настройки,  далее добавьте блок (/admin/structure/block/).

Взаимосвязанные материалы в Drupal 8

 

Конечным результатом будет вывод информации о взаимосвязанных материалах:

результат

Шаблон вывода можно отредактировать в файле "views-view-fields--vzaimosvyazannye_materialy--block_1.html.twig"

Как вывести его в шаблоне.

Вроде бы все получилось. Однако осталось вывести блок в нужно месте. Для этого необходимо немного разобраться в коде основного шаблона [имя]theme.

/**
 * Implements hook_preprocess_HOOK() for node.html.twig.
 */
function slyweb_preprocess_node(&$variables) {

	if($variables['node']->bundle() == 'article' && !$variables['teaser']) {
		$block = \Drupal\block\Entity\Block::load('views_block__vzaimosvyazannye_materialy_block_1');
	    $output = entity_view($block, 'block');
		$variables['relation'] = drupal_render($output);
	}

}

Теперь блок доступен в переменной $variables['relation'].

При этом, не забудьте, что данный блок необходим только на страницах статей:

if($variables['node']->bundle() == 'article' && !$variables['teaser']) { 

 

Взаимосвязанные материалы

# 1. Drupal 8. Шаг за шагом как создать модуль с отображением в admin панели (суббота, сентября 28, 2019 - 22:12 ),
Часто требуется не только создать модуль с функциональностью на страницах сайта, но и предоставить возможность конфигурировать настройки модуля в администраторском разделе. читать...
# 2. 15 лучших модулей в Drupal 8 (среда, сентября 25, 2019 - 16:11 ),

Drupal 8 одна из популярнейших CMS в области создания сайтов. При этом для неё доступно огромное количество модулей, упрощающих жизнь как простому разработку, так и обычному пользователю.

читать...
# 3. Созадние списка взаимосвязанных материалов (related post, content) (вторник, сентября 24, 2019 - 20:00 ),

Ни одна статья не обойдётся без списка взаимосвязанных материалов. читать...

# 4. Drupal 8. Как отключить кэширование отдельных страниц. (пятница, сентября 20, 2019 - 14:35 ),
Не знаю как Вы, но я потратил несколько часов чтобы отключить кэширование страниц самописного модуля. читать...
# 5. Копирую, копирую, копирую… (вторник, июня 12, 2018 - 09:59 ),

Сколько времени приходится тратить на копирование данных, перед тем как приступить к их модификации, перенос или восстановление? Много. читать...

На разработку сайта! Скидки до 20%!