Моя ситуация выглядит следующим образом: у меня есть семинар по типу контента с полями A, B и C. У меня есть регионы Header, Footer, Content и Sidebar Left. В семинаре есть несколько полей, которые я хочу отображать в области содержимого, а также в левой части боковой панели.
Как мне это сделать? Извиняюсь, если на это уже был дан ответ. Я разработчик и не колеблюсь, чтобы погрузиться в функции ловушки и препроцессора. У меня установлен модуль Views, но я никогда не использовал его (это мой первый сайт на Drupal, если вы не можете сказать: P).
Приветствия.
РЕДАКТИРОВАТЬ: Это для Drupal 7 .
Ответы:
Не существует простого способа добавить содержимое узла в разные области на странице. Существует несколько способов решения этой проблемы.
Некодирующий способ: виды и блоки
Создать вид
(плюс любые дополнительные настройки, которые вы хотите)
Затем перейдите на страницу блокировки администратора. Переместите созданный блок просмотра в область, которую вы хотите отобразить. Он должен отображаться только на страницах узла семинара.
Повторите для всех регионов
Путь кодирования с theme_preprocess_region ():
код будет выглядеть примерно так
Это только для Drupal 7. Теперь его можно найти в вашем region.tpl.php.
источник
Модуль Display Suite позволяет вам сделать это. Вам нужно будет включить модуль Display Suite Extras, чтобы выставлять области тем как цели для компонентов узла. Информацию о том, как это сделать, можно найти в полях «Добавить» на страницу блока документации Display Suite.
источник
У меня была такая же проблема. Решение довольно простое. Вы можете обосновать тот факт, что в Drupal 7 мы можем определить наш собственный view_mode, а не только FULL и TEASER (как мы знаем из самых старых версий). Итак, определите другой view_mode для использования в вашем регионе: например, LEFTHAND. Drupal отображает FULL view_mode в области контента. Итак, вы должны сказать Drupal для отображения LEFTHAND в боковой панели левой области.
В template_preprocess_page ()
В node.tpl.php добавьте новый экран для режима просмотра слева.
источник
if (array_key_exists('block_14',$vars['page']['main_content'])){}
делал так, чтобы он появлялся только на страницах с определенным блоком.Если Display Suite кажется вам слишком большим (это отличный модуль, но он может быть излишним, если вам просто нужно переместить несколько полей), есть модуль только для этой цели -> Блоки CCK .
Я знаю, что это называется «CCK» блоки, но он работает с Drupal 7 (который принес функциональность CCK в ядро).
источник
Небольшое изменение в ответе @Patrik Lucan
if ($vars['node'])
вызвало у меня проблемы на страницах, которые не были узлами, например, пользовательская лицевая страница с блоком или страницами просмотра.Изменился на:
if (array_key_exists('node', $vars))
Который, кажется, решил проблему.
источник
Между тем есть модуль для этого. Со страницы модуля:
источник