Хорошо, вот в чем дело: я создаю сайт Drupal, который имеет несколько различных разделов. Каждый раздел представляет собой представление, отображающее тип содержимого. (Каждый раздел имеет свой собственный тип контента) Например, у меня есть представление, которое указывает на ?q=blog
, который отображает тип контента blog
.
Все разделы выглядят немного по-другому. Не так, как «сайт внутри веб-сайта», отличающийся, но достаточно разный, чтобы все они не могли использовать один и тот же файл шаблона и каждый из них был изменен с помощью CSS. Каждый раздел нуждается в своем собственном page.tpl.php
.
К сожалению, .info-файлы темы AFAIK Drupal могут либо назначить только одну page.tpl.php
для всей темы, либо назначить page-node-####.tpl.php
для каждого узла. На этом веб-сайте будет много контента, поэтому настройка Drupal на создание нового идентичного page-node-####.tpl.php
для каждого созданного узла очень быстро станет неуправляемой.
Чтобы решить эту проблему, я собираюсь использовать pathauto для создания псевдонима для каждого типа контента. Например, все узлы типа контента blog
имеют псевдоним ?q=blog/[post title]
. Измените template.php
, чтобы использовать page-blog.tpl.php
для любой страницы, псевдоним которой начинается со слова «блог».
Другие люди пытались делать подобные вещи и создавали функции, подобные описанной. К сожалению, все, что я видел, предназначены для Drupal 6 или ниже. Я попытался изменить существующие безуспешно. Пока, однако, я думаю, что это на правильном пути:
function basic_preprocess_page(&$vars, $hook) {
...
if( module_exists('path') ) {
$alias = drupal_get_path_alias( $_GET['q'] );
$site_section = "blog";
if( strpos( $alias, $site_section ) === 0 ) {
$VARIABLE_THAT_TELLS_THE_PAGE_WHAT_TEMPLATE_TO_USE = "/path/to/page-blog.php";
}
}
}
Я не могу найти $VARIABLE_THAT_TELLS_THE_PAGE_WHAT_TEMPLATE_TO_USE
Кто-нибудь знает, что это такое?
Возможно, мой сайт плохо структурирован. Если кто-то знает, как реструктурировать мой сайт, чтобы мне было легче создать тему с отдельными разделами, поделитесь, пожалуйста, как!
Спасибо миллион! (c:
РЕДАКТИРОВАТЬ: Возможно, мне нужно вместо этого использовать предложения шаблона. Кто-нибудь знает функцию или переменную, чтобы использовать для установки этого?