Код из блога http://xandeadx.ru/blog/drupal/89
Обеспечивает для избранных нод отдельный шаблон
function phptemplate_preprocess_page(&$vars)
{
if (isset($vars['node']) && ($vars['node']->nid == 1 || $vars['node']->nid == 99))
{
$vars['template_files'][] = 'page-someword';
}
}
{
if (isset($vars['node']) && ($vars['node']->nid == 1 || $vars['node']->nid == 99))
{
$vars['template_files'][] = 'page-someword';
}
}
Вопросов по коду два:
1. возможно ли код упростить так, чтобы достаточно было перечислить nid через запятую?
2. более важный вопрос, если страниц, для которых требуется отдельный шаблон, будет скажем штук 500 соответственно записей вида
$vars['node']->nid == 99
так же будет 500 штук - скажется ли это на производительности?
Комментарии
Если 500, наверно лучше переменные хранить уже в базе.
Возможно, поможет готовое решение ThemeKey.
используй in_array().
Можешь написать 500 условий "или" и аналогичный in_array и замерь скорость.
Если бы я мог переписать код я бы конечно же сам проверил на сколько тяжелее стало
Если 500, то может стоит подумать как-то привязываться к типу ноды? Темить по id ноды - как то не гибко. Ноды ведь и удаляются
<?php function phptemplate_preprocess_page(&$vars){
if (isset($vars['node']) && $vars['node']->type == 'mynodetype'){
$vars['template_files'][] = 'page-someword';
}
} ?>
По типу темизирую параллельно, в моем случае именно разные ноды в одном типе нод нужно изменить, эти ноды ни как не связаны между собой ни общей таксономией ни алиасом
Что темить по айди? Неужели серьёзно менять макет? Обычно в таких случаях как ваш (500) народ хочет тривиальные вещи вроде отдельный фон. Если это случилось и с вами, то может привязываться к классам боди или дива контейнера ноды?
Увы в моем случае нужны половина других регионов + другая разметка шаблона. Тривиальный вещи я всегда нахожу в поисковике, остаются нетривиальные...
Конечно поделить часть страниц на разные регионы можно, но думаю геморроя будет еще больше
создать для типа материала cck-поле field_template, в котором хранить имя шаблона (пустое = дефолтный), админить станет гораздо проще
либо смотреть в сторону панелей