Почему на странице, сформированной через view, номер ноды пустой ($node->nid) ?

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

Аватар пользователя igorrusy igorrusy 9 сентября 2012 в 19:37

Почему на странице, сформированной через view, номер ноды пустой ($node->nid) ?

При этом в адресной строке браузера я прекрасно вижу http://localhost/drupal6/mysite/?q=node/16
А вот в page.tpl.php получить номер ноды не удается.
В чем же дело?
Подскажите, как с этим бороться.

Заранее благодарен!

Комментарии

Аватар пользователя sg85 sg85 9 сентября 2012 в 19:43

Объект ноды будет только в node.tpl.php, в других шаблонах его быть не может, если нужен объект ноды, его придется предварительно загрузить(node_load()) либо сделать прямую выборку из бд, если нод нужно несколько для построения списка, но этим обычно views занимается

Аватар пользователя aa2ndrew aa2ndrew 10 сентября 2012 в 11:30

"igorrusy" wrote:
А разве page - не является нодой (особенно в page.tpl.php) ?

Неправильная постановка вопроса. page.tpl.php - это шаблон всей страницы. Для ноды типа page шаблон должен называться node-page.tpl.php.

Аватар пользователя igorrusy igorrusy 10 сентября 2012 в 12:09

Попробую пояснить в чем у меня трудность:
Если страница сделана стандартным путем, т.е. через "Создать материал", то ей автоматом присваивается номер ноды. И затем, когда вызывается эта страница для отображения, то в page.tpl.php я могу, опираясь на ее nid, "указать" браузеру использовать той или иной css.
А вот, когда страница сформирована с помощью views (скажем, список товаров), то в этом случае у страницы в page.tpl.php отсутствует nid.
И как в этом варианте мне "подсунуть" нужный css? Пока я не знаю.
Подтолкните, пож, в нужную сторону.

Аватар пользователя igorrusy igorrusy 10 сентября 2012 в 12:28

"aa2ndrew" wrote:
Ну так понятно, у вас то много может быть $node->nid, раз это список нод.

Так что, страница при этом номера ноды не имеет вообще?

Аватар пользователя aa2ndrew aa2ndrew 10 сентября 2012 в 12:44

"igorrusy" wrote:
Так что, страница при этом номера ноды не имеет вообще?

Как страница создана через модуль вьювс может иметь номер ноды? Это вьювс имеет номер ноды, а страница в свою очередь имеет идентификатор вьювса.

Аватар пользователя igorrusy igorrusy 10 сентября 2012 в 12:55

Я просто до этого использовал простой прием:
получая id ноды страницы, автоматом из css выбирался нужный набор свойств (цвет, фоновое изображение и тд.)
А теперь вообще непонятно, за что можно зацепиться на странице, сформированной вьюсом.
За идентификатор вьюса? А как я его вытащу?

Аватар пользователя aa2ndrew aa2ndrew 10 сентября 2012 в 13:33

Дописывайте классы к body, например, текущий урл страницы (так сделано в теме бартик в друпал 7), и прописывайте стили в основном файле в зависимости от класса. Как прописать классы? Смотрите функцию template_preprocess_page().

Аватар пользователя igorrusy igorrusy 10 сентября 2012 в 14:26

Всё это очень правильно.
Но препроцессор не дает ответа на вопрос: как сформирована данная страница, вьюшкой или чем-то еще?

Аватар пользователя sg85 sg85 11 сентября 2012 в 22:15

Блин, страницы вызываются по сути через
hook_menu, который вызывают некую функцию на основании пути запроса, он же путь, без учета синонимов, соответственно узнать, что сгенерировало страницу можно заглянув в путь, используя для этого например функцию arg