D6: как добраться до полей узла в preprocess_page ()? - PullRequest
0 голосов
/ 11 августа 2009

Я создал представление, которое отображает мою домашнюю страницу в порядке, но теперь требуется изменение: я загружаю 2 поля (изображения) в моем представлении, но мне нужно отображать только одно из них, в зависимости от значения третьего поля (даты) и сегодняшняя дата. если поле даты позже, чем сегодня, покажите изображение y, а если оно раньше, чем сегодня, покажите изображение x. такого рода логика не может быть сделано в представлении.

, поэтому в моем файле template.php хотелось бы выводить x или y как $ vars ['img'] в функции preprocess_page. мне просто интересно, как мне получить значения этих полей? это не узел, а список тизеров узла.

  • функция получает & $ vars, но print_r из них просто показывает вывод html.
  • пользовательский sql, кажется, не тот путь.
  • когда я загружаю представление, я просто получаю HTML, который он выводит, но (я думаю) мне нужны необработанные данные для сравнения дат.

спасибо за любые указатели!

Ответы [ 2 ]

0 голосов
/ 15 августа 2009

Как насчет использования preprocess_node() вместо?

0 голосов
/ 11 августа 2009

Я уверен, что есть несколько способов сделать это, некоторые более хакерские, чем другие. Я бы:

  1. Создайте шаблон, соответствующий вашему виду
  2. Создайте функцию предварительной обработки для представления и создайте логическую переменную, проверив, какой img должен отображаться.
  3. Наконец, я бы немного изменил шаблон, сделав оператор if, который проверяет, должен ли он отображать img x или y.

Это решение довольно простое и прямолинейное, недостатком является то, что оно не совсем общее, так как вам, скорее всего, потребуется знать имена используемых вами полей cck. Сомнительно, что вы все равно сможете обобщить это.

Изменить:

Чтобы уточнить немного. Вы можете посмотреть на используемый шаблон общих видов, это даст вам некоторое представление о том, как виды печатают различные поля. Обычно получение полей обычно не является большой проблемой, когда у вас есть объект $ node. Причина в том, что cck добавляет поля к объекту $ node, чтобы вы могли получить к нему доступ. Я полагаю, что вы можете сделать что-то в строке $ node-> field_ [the_name], чтобы добраться до поля. Я бы посоветовал вам использовать модуль devel, если вы этого еще не сделали, и сделать dpm ($ node) где-то в шаблоне, где вы просматриваете узлы. Это позволит вам увидеть, что было определено в объекте $ node. Это не должно быть большой проблемой, чтобы напечатать img оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...