Почему на странице, сформированной через view, номер ноды пустой ($node->nid) ?
При этом в адресной строке браузера я прекрасно вижу http://localhost/drupal6/mysite/?q=node/16
А вот в page.tpl.php получить номер ноды не удается.
В чем же дело?
Подскажите, как с этим бороться.
Заранее благодарен!
Комментарии
Объект ноды будет только в node.tpl.php, в других шаблонах его быть не может, если нужен объект ноды, его придется предварительно загрузить(node_load()) либо сделать прямую выборку из бд, если нод нужно несколько для построения списка, но этим обычно views занимается
$node = menu_get_object('node');
А разве page - не является нодой (особенно в page.tpl.php) ?
А разве page - не является нодой (особенно в page.tpl.php) ?
Неправильная постановка вопроса. page.tpl.php - это шаблон всей страницы. Для ноды типа page шаблон должен называться node-page.tpl.php.
Попробую пояснить в чем у меня трудность:
Если страница сделана стандартным путем, т.е. через "Создать материал", то ей автоматом присваивается номер ноды. И затем, когда вызывается эта страница для отображения, то в page.tpl.php я могу, опираясь на ее nid, "указать" браузеру использовать той или иной css.
А вот, когда страница сформирована с помощью views (скажем, список товаров), то в этом случае у страницы в page.tpl.php отсутствует nid.
И как в этом варианте мне "подсунуть" нужный css? Пока я не знаю.
Подтолкните, пож, в нужную сторону.
Ну так понятно, у вас то много может быть $node->nid, раз это список нод.
Так что, страница при этом номера ноды не имеет вообще?
Как страница создана через модуль вьювс может иметь номер ноды? Это вьювс имеет номер ноды, а страница в свою очередь имеет идентификатор вьювса.
Так вам надо подключить css или получить номер ноды?
Я просто до этого использовал простой прием:
получая id ноды страницы, автоматом из css выбирался нужный набор свойств (цвет, фоновое изображение и тд.)
А теперь вообще непонятно, за что можно зацепиться на странице, сформированной вьюсом.
За идентификатор вьюса? А как я его вытащу?
Дописывайте классы к body, например, текущий урл страницы (так сделано в теме бартик в друпал 7), и прописывайте стили в основном файле в зависимости от класса. Как прописать классы? Смотрите функцию template_preprocess_page().
Всё это очень правильно.
Но препроцессор не дает ответа на вопрос: как сформирована данная страница, вьюшкой или чем-то еще?
Блин, страницы вызываются по сути через
hook_menu, который вызывают некую функцию на основании пути запроса, он же путь, без учета синонимов, соответственно узнать, что сгенерировало страницу можно заглянув в путь, используя для этого например функцию arg