Почему не реагирует node.tpl.php?

Главные вкладки

Аватар пользователя andrewthomson andrewthomson 13 мая 2013 в 0:43

Была задача, надо вывести регион внутри контента до комментариев. Вроде нашел решение, но почему то не работает и что то заметил, что вообще не реагирует ни на какие изменения node.tpl.php темы.

Не подскажете почему? Хоть что там пиши и удаляй, все без изменений. Кеш чистил.

Так же где должен лежать системный node.tpl.php? у меня его тоже как будто нет.

Комментарии

Аватар пользователя OldWarrior OldWarrior 13 мая 2013 в 0:48

"andrewthomson" wrote:
вывести регион внутри контента

Простите, а это как "внутри"?
Content - это уже и есть регион.

А вообще - любой дополнительный регион сначала надо описать в theme.info

"andrewthomson" wrote:
Так же где должен лежать системный node.tpl.php?

modules/node/node.tpl.php

Аватар пользователя andrewthomson andrewthomson 13 мая 2013 в 0:56

Вообщем, что я сделал, добавил регион в 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 ничего не изменяется, хоть очистить файл, ему все равно.

Аватар пользователя OldWarrior OldWarrior 13 мая 2013 в 1:07

"andrewthomson" wrote:
Далее в template.php вставил следующий код:
function theme_preprocess_node(&$variables) {
$variables['above_comments'] = drupal_render(block_get_blocks_by_region('above_comments'));
}

Это зачем?

"andrewthomson" wrote:
Регион появился, но содержимое региона не показывается.

Значит содержимого нет.

"andrewthomson" wrote:
И так же заметил, что можно что угодно писать в node.tpl.php ничего не изменяется, хоть очистить файл, ему все равно.

Кеш сбрасывать почаще.

Аватар пользователя andrewthomson andrewthomson 13 мая 2013 в 1:12

Умник же ты.
По поводу кеша я тебе писал.

По поводу содержимого оно есть.

А по поводу зачем, потому что так надо, т.к. нашел такой вариант решения.

Щас столкнулся с тем, что для нод выводится содержимое блока, а для нод типа товары не выводится содержимое блока. Специально создал щас шаблон node--tovary.tpl.php и вставил уда необходимый код, и ничего не работает. А для нод типа basic page работает...

Аватар пользователя OldWarrior OldWarrior 13 мая 2013 в 1:28

"andrewthomson" wrote:
Умник же ты.

Хы. Видимо, да, бро.

"andrewthomson" wrote:
А по поводу зачем, потому что так надо, т.к. нашел такой вариант решения.

"Оно" прекрасно будет работать и без "потому что так надо", зуб даю.

"andrewthomson" wrote:
Щас столкнулся с тем, что для нод выводится содержимое блока, а для нод типа товары не выводится содержимое блока. Специально создал щас шаблон node--tovary.tpl.php и вставил уда необходимый код, и ничего не работает. А для нод типа basic page работает...

Регионы обычно объявляются в page.tpl.php.
Который, как мы помним, является "каркасом" страницы независимо от типа материала.
Ну, так, какбэ намёк.

Аватар пользователя OldWarrior OldWarrior 13 мая 2013 в 1:40

Вообще - непонятно, зачем вам регион?

Если уж всё равно модифицируете template.php, добавляя новые переменные в ноду, то просто модифицируйте шаблон соответствующего типа материала для вывода этих переменных в нужном месте ноды.

И все дела.

Аватар пользователя k_dmitry k_dmitry 13 мая 2013 в 2:17

ТС, в настройках блоков, свой блок выведите в content и в настройках включите его для нужного типа материала, в node.tpl.php он будет доступен как $content['above_comments']....

Аватар пользователя andrewthomson andrewthomson 16 мая 2013 в 10:56

"OldWarrior" wrote:
Вообще - непонятно, зачем вам регион?

Чтобы вставить блок между контентом и комментариями к контенту.

"OldWarrior" wrote:
Регионы обычно объявляются в page.tpl.php.
Который, как мы помним, является "каркасом" страницы независимо от типа материала.
Ну, так, какбэ намёк.

Ты же видел что я написал вверху, первый пост? Для таког ометода не нужно никаких регионов писать в page.tpl.php, т.к. я добавляю переменную в node.tpl.php и она должна быть там доступна с тем содержимом которое находится в этом регионе. Т.к. этот регион определился как регион.

Не работало все это потому, что использовался не тот tpl который нужен. Стоял модуль DS, в котором использовались другие шаблонные файлы, поэтому не было никаких реакций на node.tpl.php и node--tovary.tpl.php Там используются другие шаблонные файлы. Снес этот модуль и все заработало как надо. Спасибо.

Аватар пользователя OldWarrior OldWarrior 16 мая 2013 в 22:19

"andrewthomson" wrote:
Ты же видел что я написал вверху, первый пост? Для таког ометода не нужно никаких регионов писать в page.tpl.php, т.к. я добавляю переменную в node.tpl.php и она должна быть там доступна с тем содержимом которое находится в этом регионе. Т.к. этот регион определился как регион.

Видимо, "провтыкал" или не понял задачу.