Доброго времени суток. Прошу помочь пользователей форума, ибо весь день убил на решения данной проблемы.
Вопрос заключается в следующем:
Как изменить id ноды на имя?
Т.е. есть страница sitename.ru/company/contacts/ask которая использует ноду page--node--127.tpl.php как с нее сделать page--node--ask или page--node--company--contacts--ask.tpl.php ?
Перечитал кучу материала по поводу темизации page.tpl.php, находил записи на форумах с подобными вопросами http://www.drupal.ru/node/36403, http://xandeadx.ru/blog/drupal/89, http://drupalace.ru/lesson/bystryi-start-v-temizatsii-drupal. Использовал те функции которые нужно было прописывать в template.tpl.php , переименовывал ноду сотни раз с различными именами page__url__ask, page--url--ask, page--node--ask, page-company-contacts-ask и т.д. , чистил кэш- но результата ни какого
Прошу тыкнуть носом если я что-то упускаю, всю голову сломал данным вопросом.
Комментарии
Вы вроде все сами нашли, по идеи должно быть так:
<?php
function THEMENAME_preprocess_page(&$vars) {
if (isset($vars['node']) && ($vars['node']->nid == 127)) {
$vars['theme_hook_suggestions'][] = 'page__node__ask';
}
}
?>
page--node--ask.tpl.php
только не понятно какой в этом смысл
Спасибо за ответ.
Да, я находил подобный код, но он применялся ко всем нодам с 1 по 99.
Мне нужно что бы к примеру 101му ноду один шаблон был, к 127му второй, 150му, третий и т.д.
Как я могу это реализовать? или мне нужно будет в template наплодить кучу if-ов где буду менять индентификаторы?
$vars['theme_hook_suggestions'][] = 'page__node__ask';
}
Смысл в том, что когда большой проект, на фтп лежит больше 20 нод с различными идентификаторами, и что бы найти нужный, потребуется некоторое время, а так смотришь page--node--ask и понимаешь, к чему относится данный шаблон
тогда вот то, что вам нужно https://groups.drupal.org/node/130944
Создайте у типа контента поле-список для выбора нужного шаблона и для его значений определите несколько разных шаблонов, несколько изменив коды выше. Такой функциональности к сожалению нет в Друпале, иногда она действительно бы не помешала по примеру page templates в WP. Приходится либо создавать разные типы контентов, либо мудрить с селектом.
Это не совсем то, что нужно.
Мне больше нравится предыдущий вариант, только там не понятно как реализовать вывод для каждой ноды а не только определенной
А что вам нужно? Если нужно создать отдельный темплейт для типа контента page.tpl.php, то это несложно - https://www.drupal.org/node/1089656#comment-4662688
Конкретно для страницы должен подхватиться шаблон page--company--contacts--ask.tpl.php - тут решение - https://cheekymonkeymedia.ca/blog/creating-drupal-7-template-suggestions...
«Конкретно для страницы должен подхватиться шаблон page--company--contacts--ask.tpl.php - тут решение - https://cheekymonkeymedia.ca/blog/creating-drupal-7-template-suggestions...»
Спасибо! это именно то, что мне нужно было
Не за что, но это решение честно говоря мне не нравится, вы ставите темизацию страницы в зависимость от ее URL, а это неправильно. Какой-нибудь сеошник заменит урл и все повалится.
лайфхак..
В папке с шаблонами создаете пустые файлы, имена которых начинаются так-же как и у шаблонов с nid.
т.е.
шаблон: page--node--127.tpl.php
"копия": page--node--127--ask.tpl.php
При сортировке файлов по имени шаблон и копия всегда быдут рядом.
еще вариант..
Все также как Вам и писали выше (suggestion и т.п.) только вместо суффикса шаблона (ask) подставляете значение специального текстового поля, которое нужно предварительно создать в материале и заполнить нужным значением.
например имя поля-суфикса: field_template_suffix
<?php
if (isset($vars['node']) && !empty($vars['node']->field_template_suffix['und'][0]['value'])) {
$vars['theme_hook_suggestions'][] = 'page__node__'.$vars['node']->field_template_suffix['und'][0]['value'];
}
?>