использование определенного идентификатора узла для вызова файла шаблона - PullRequest
0 голосов
/ 10 августа 2010

Стандартный шаблон для узла в Drupal: node.tpl.php

Можно вызвать другой шаблон для типа контента, например, «newsitem».Вы назовете это так: node-newsitem.tpl.php.

Мне было интересно, есть ли способ вызвать конкретный идентификатор узла?node-34.tpl.php не не работает.

Спасибо

Ответы [ 4 ]

6 голосов
/ 01 ноября 2011

Для Drupal 7 используйте это имя шаблона (34 - это идентификатор узла):

node--34.tpl.php

И не забудьте очистить кеш! Больше информации на drupal.org

3 голосов
/ 10 августа 2010

В template.php вашей темы поместите следующее в начало theme_preprocess_node ():
$vars['template_files'][] = 'node-'. $vars['node']->nid;

Так что если ваша тема называется "myTheme", у вас может быть следующее:

function myTheme_preprocess_node(&$vars){  
    $vars['template_files'][] = 'node-'. $vars['node']->nid;  
}
0 голосов
/ 10 августа 2010

У меня это работает, пока мы говорим.В Drupal 6 моей главной страницей является узел 5. Он использует

page-node-5.tpl.php

Если он не загружается, рассмотрите возможность очистки кеша или перестройкиреестр вашей темы.

0 голосов
/ 10 августа 2010

Это соглашение об именах будет работать, но не по умолчанию.Предполагая, что это Drupal 6, попробуйте добавить следующий код в template.php вашей темы:

/**
* Override or insert variables into the node templates.
*
* @param $vars
*   An array of variables to pass to the theme template.
* @param $hook
*   The name of the template being rendered ("node" in this case.)
*/
function yourthemename_preprocess_node(&$vars, $hook) {
  $node = $vars['node'];
  $vars['template_file'] = 'node-'. $node->nid;
}

Убедитесь, что вы не пытаетесь переопределить yourthemename_preprocess_node() - то есть, если он уже существует в вашемtemplate.php темы, просто добавьте в него строки $ node и $ vars ['template_file'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...