Итак, у меня есть три разных блока внутри правой области боковой панели. Что я хотел бы сделать, так это изменить, какой из них отображается в зависимости от типа контента. Я новичок в Drupal, и из того, что я вижу в списке доступных переменных, у меня нет возможности увидеть, какой тип контента я использую при настройке block.tpl.php. Является ли это возможным?
Drupal 7: отображать разные боковые панели в зависимости от типа контента
Ответы (3)
Я бы рекомендовал использовать модуль контекста для определения разных "контекстов" для разных типов контента. Затем каждый контекст можно настроить для отображения разных блоков.
Другой альтернативой является модуль Panels, но Panels делает гораздо больше и, следовательно, имеет более сложный интерфейс, поэтому он новичкам может быть трудно освоить.
В Drupal 7 нет необходимости в дополнительном модуле. Когда вы редактируете блок (в CMS, а не в файле шаблона), посмотрите «Настройки видимости» в разделе «Типы контента< /сильный>"
Здесь вы можете указать, на каких типах показывать блок.
Примечание. Если ничего не выбрано, оно будет доступно для всех типов содержимого.
Если вы хотите использовать только 1 блок, вы можете добавить код для получения типа узла:
<?php
if (arg(0) == 'node') {
$node = node_load(arg(1));
}
?>
И теперь вы можете получить доступ к типу с помощью: $node->type
Если бы вы собирались с 3 отдельными блоками...
Установите автоматический путь (http://drupal.org/project/pathauto)
Установите пути к узлам, чтобы они были разными. В этом примере я буду использовать статьи и продукты в качестве типов контента:
Статьи: статьи/[title-raw] Товары: products/[title-raw]
Затем настройте отображение блоков на основе URL-адреса.
Для блока статей используйте: article/* Для блока товаров используйте: products/*