venji 28 сентября 2016 в 11:58 Доброго времени суток Как переопределить шаблон для самой ноды, в зависимости от того какой термин она имеет? то есть есть у страницы термин "насос" - 1 шаблон, если термин "труба" - 2 шаблон ну и тд.. есть варианты? Drupal7 Есть вопрос Решение проблем Блог Войдите или зарегистрируйтесь, чтобы отправлять комментарии
bumble 28 сентября 2016 в 12:08 В node--[type].tpl.php использовать условия: <?php $tid = 'получить ID термина'; ?> <?php if ($tid == 1): ?> <!-- Шаблон для ноды с термином 1 --> <?php elseif ($tid == 2): ?> <!-- Шаблон для ноды с термином 2 --> <?php elseif ($tid == 3): ?> <!-- Шаблон для ноды с термином 3 --> ... <?php else; ?> <!-- Шаблон для других нод -->
gun_dose 29 сентября 2016 в 10:43 <?phpfunction trololo_preprocess_page(&$variables, $hook) { $node = $variables['node']; $terms = $node->field_ololo['und']; foreach ($terms as $key => $term) { $variables['theme_hook_suggestions'][] = 'page__term' . $term; }}?>
venji 29 сентября 2016 в 11:46 Что то не получается <?phpfunction theme12_preprocess_page(&$variables, $hook) { $node = $variables['node']; $terms = $node->field_catalogbrands['und']; foreach ($terms as $key => $term) { $variables['theme_hook_suggestions'][] = 'page__term__' . $term; }}?> создал page--term--982.tpl.php и ничего..
gun_dose 29 сентября 2016 в 14:05 А так? <?phpfunction theme12_preprocess_page(&$variables, $hook) { $node = $variables['node']; $terms = $node->field_catalogbrands['und']; foreach ($terms as $key => $term) { $variables['theme_hook_suggestions'][] = 'page__term__' . $term['tid']; }}?>
venji 29 сентября 2016 в 14:27 Так работает, спасибо! А есть ли вариант чтобы в место id словаря было его название? пример site.ru/brands/abion page--term--abion.tpl.php
gun_dose 29 сентября 2016 в 14:36 Будут проблемы с кириллическими названиями и с пробелами. Но в принципе же можно по tid подгрузить термин и придумать вообще всё, что угодно.
Lotar 28 сентября 2016 в 12:29 Есть еще модуль контекст. Если я правильно понял задачу он тоже подойдет.
Комментарии
В node--[type].tpl.php использовать условия:
<?php if ($tid == 1): ?>
<!-- Шаблон для ноды с термином 1 -->
<?php elseif ($tid == 2): ?>
<!-- Шаблон для ноды с термином 2 -->
<?php elseif ($tid == 3): ?>
<!-- Шаблон для ноды с термином 3 -->
...
<?php else; ?>
<!-- Шаблон для других нод -->
лучше в template.php через theme_hook_suggestions
Как?
Пожалуй да...
По вопросу theme_hook_suggestions можно подробней? Спасибо за ответ.
<?php
function trololo_preprocess_page(&$variables, $hook) {
$node = $variables['node'];
$terms = $node->field_ololo['und'];
foreach ($terms as $key => $term) {
$variables['theme_hook_suggestions'][] = 'page__term' . $term;
}
}
?>
Что то не получается
<?php
function theme12_preprocess_page(&$variables, $hook) {
$node = $variables['node'];
$terms = $node->field_catalogbrands['und'];
foreach ($terms as $key => $term) {
$variables['theme_hook_suggestions'][] = 'page__term__' . $term;
}
}
?>
создал page--term--982.tpl.php и ничего..
А так?
<?php
function theme12_preprocess_page(&$variables, $hook) {
$node = $variables['node'];
$terms = $node->field_catalogbrands['und'];
foreach ($terms as $key => $term) {
$variables['theme_hook_suggestions'][] = 'page__term__' . $term['tid'];
}
}
?>
Так работает, спасибо! А есть ли вариант чтобы в место id словаря было его название? пример site.ru/brands/abion page--term--abion.tpl.php
Будут проблемы с кириллическими названиями и с пробелами. Но в принципе же можно по tid подгрузить термин и придумать вообще всё, что угодно.
Есть еще модуль контекст. Если я правильно понял задачу он тоже подойдет.