Была задача, надо вывести регион внутри контента до комментариев. Вроде нашел решение, но почему то не работает и что то заметил, что вообще не реагирует ни на какие изменения node.tpl.php темы.
Не подскажете почему? Хоть что там пиши и удаляй, все без изменений. Кеш чистил.
Так же где должен лежать системный node.tpl.php? у меня его тоже как будто нет.
Комментарии
Простите, а это как "внутри"?
Content - это уже и есть регион.
А вообще - любой дополнительный регион сначала надо описать в theme.info
modules/node/node.tpl.php
Вообщем, что я сделал, добавил регион в info файл:
regions[above_comments] = Above comments
Далее в template.php вставил следующий код:
function theme_preprocess_node(&$variables) {
$variables['above_comments'] = drupal_render(block_get_blocks_by_region('above_comments'));
}
theme_ - заменил на название темы
И в node.tpl.php вставил:
<?php if ($above_comments): ?>
<?php print $above_comments; ?>
<?php endif ?>
Регион появился, но содержимое региона не показывается.
И так же заметил, что можно что угодно писать в node.tpl.php ничего не изменяется, хоть очистить файл, ему все равно.
Это зачем?
Значит содержимого нет.
Кеш сбрасывать почаще.
Умник же ты.
По поводу кеша я тебе писал.
По поводу содержимого оно есть.
А по поводу зачем, потому что так надо, т.к. нашел такой вариант решения.
Щас столкнулся с тем, что для нод выводится содержимое блока, а для нод типа товары не выводится содержимое блока. Специально создал щас шаблон node--tovary.tpl.php и вставил уда необходимый код, и ничего не работает. А для нод типа basic page работает...
Хы. Видимо, да, бро.
"Оно" прекрасно будет работать и без "потому что так надо", зуб даю.
Регионы обычно объявляются в page.tpl.php.
Который, как мы помним, является "каркасом" страницы независимо от типа материала.
Ну, так, какбэ намёк.
Вообще - непонятно, зачем вам регион?
Если уж всё равно модифицируете template.php, добавляя новые переменные в ноду, то просто модифицируйте шаблон соответствующего типа материала для вывода этих переменных в нужном месте ноды.
И все дела.
ТС, в настройках блоков, свой блок выведите в content и в настройках включите его для нужного типа материала, в node.tpl.php он будет доступен как $content['above_comments']....
Чтобы вставить блок между контентом и комментариями к контенту.
Ты же видел что я написал вверху, первый пост? Для таког ометода не нужно никаких регионов писать в page.tpl.php, т.к. я добавляю переменную в node.tpl.php и она должна быть там доступна с тем содержимом которое находится в этом регионе. Т.к. этот регион определился как регион.
Не работало все это потому, что использовался не тот tpl который нужен. Стоял модуль DS, в котором использовались другие шаблонные файлы, поэтому не было никаких реакций на node.tpl.php и node--tovary.tpl.php Там используются другие шаблонные файлы. Снес этот модуль и все заработало как надо. Спасибо.
Видимо, "провтыкал" или не понял задачу.