2010-08-20 2 views

ответ

1

Я понимаю, что четыре страницы, о которых вы говорите, являются узлами. Тема может иметь разные шаблоны для разных типов контента.
Точно так же, как template_preprocess_node(), модуль может реализовать hook_preprocess_node() и предложить использовать другой файл шаблона.

// This code is present in template_preprocess_node(). 
// Clean up name so there are no underscores. 
$variables['template_files'][] = 'node-'. $node->type; 

// This is what the module custom_module.module can write in custom_module_preprocess_node(). 
$variables['template_files'][] = 'node-'. $node->uid; 

Если пользовательский модуль хочет быть уверен, что шаблон он указывает проверяется перед другими файлами шаблонов, то он может принять следующий код:

if (isset($variables['template_files']) && is_array($variables['template_files'])) { 
    $variables['template_files'] = array_unshift($variables['template_files'], 'node-'. $node->uid); 
} 

Тема должна иметь файл шаблона с предлагаемым именем (node-1.tpl.php для узла с идентификатором 1, например), или файл шаблона по умолчанию node.tpl.php.

0

Модуль Sections позволяет назначать тему за узел с страницы редактирования узла.

Это ключевая цель - разрешить тему для раздела, так что, например, admin/* может использовать Garland, mymicrosite/* может использовать customtheme1, а остальная часть сайта может использовать customtheme2, однако вы можете создать раздел -per-node ', который вы пытаетесь сделать в разделе: 0)

+0

Я только что перечитал это и понял, что вы попросили «шаблон», а не «тему». Однако я оставлю свой ответ, если он все же поможет. – CitrusTree

1

Если вы хотите совершенно другой дизайн для своих страниц (а не только другой фон или внешний вид области содержимого или что-то еще как это), я думаю, что лучше использовать шаблоны страниц вместо шаблонов узлов. По умолчанию вы можете использовать шаблоны page-node-nid.tpl.php (замените nid на идентификатор вашего узла).

Если вы хотите, например, другой дизайн для конкретного типа узла - вы можете использовать theme_preprocess_page функцию в template.php:

function yourtheme_preprocess_page(&$vars, $hook){ 
    $vars['template_files'][] = 'page-'.$vars['node']->type; 
} 

Ответ несколько похож на предыдущий, но ключевая точка здесь заключается в использовании шаблонов страниц вместо шаблонов узлов (и preprocess_page вместо preprocess_node). Поскольку использование шаблона узла позволяет вам изменять только вывод содержимого, в то время как шаблон страницы позволяет вам писать полный шаблон с нуля, начиная с тега <html>.

P.S. И не забудьте очистить кеш при работе с темами, на всякий случай.