Как мне получить идентификатор узла из строки представления?


Я использую Drupal. У меня есть модуль, который загружает форму на узел. В своем модуле я использовал

if ( arg(0) == 'node' && is_numeric(arg(1)) ) {$node = arg(1);}

, на котором была nid каждая форма.

Теперь я создал представление, в котором отображаются полные узлы, но мои узлы не отображают nid.

Я попытался использовать что-то вроде

$node = node_load($rows->nid);

Но он ничего не вернул.

В основном у меня есть страница просмотра, на которой отображается около 10 узлов, и я пытаюсь найти nid каждого узла в представлении.

Author: kiamlaluno, 2011-11-20

2 answers

Вы можете использовать модуль настраиваемого поля views, который предоставит вам доступ к объекту $data для каждой строки. В него будет включен идентификатор nid как $data->nid. Вы также можете получить к нему доступ через views-row.tpl.php. Если у вас есть модуль разработки (что действительно необходимо), вы можете использовать dsm(get_available_vars()); для точной печати всех переменных, доступных для этого шаблона, или просто dsm($data); для точной печати объекта данных в пользовательском поле представлений (dsm() использует Krumo, что очень удобно).

 1
Author: Sean Robertson, 2011-11-20 20:54:04
if ( arg(0) == 'node' && is_numeric(arg(1)) ) {$node = arg(1);}

Этот код работает только в том случае, если пользователь находится на странице узла. Не имеет значения, является ли путь псевдонимным. Так что в Представлениях это не сработает.

Если вы создаете представление, отображающее узлы, вы можете добавить поле node:id, чтобы получить идентификатор узла узла, которому принадлежит строка. Я считаю, что нет необходимости использовать пользовательские представления (или модуль PHP представлений, если вы используете Drupal 7).

Если вы пытаетесь получить идентификатор узла ссылочного представления, добавьте связь с другим узлом через ссылку на узел первое поле.

 0
Author: Ayesh K, 2011-11-21 20:47:37