Как мне получить идентификатор узла из строки представления?
Я использую Drupal
. У меня есть модуль, который загружает форму на узел. В своем модуле я использовал
if ( arg(0) == 'node' && is_numeric(arg(1)) ) {$node = arg(1);}
, на котором была nid
каждая форма.
Теперь я создал представление, в котором отображаются полные узлы, но мои узлы не отображают nid
.
Я попытался использовать что-то вроде
$node = node_load($rows->nid);
Но он ничего не вернул.
В основном у меня есть страница просмотра, на которой отображается около 10 узлов, и я пытаюсь найти nid
каждого узла в представлении.
2 answers
Вы можете использовать модуль настраиваемого поля views, который предоставит вам доступ к объекту $data для каждой строки. В него будет включен идентификатор nid как $data->nid
. Вы также можете получить к нему доступ через views-row.tpl.php
. Если у вас есть модуль разработки (что действительно необходимо), вы можете использовать dsm(get_available_vars());
для точной печати всех переменных, доступных для этого шаблона, или просто dsm($data);
для точной печати объекта данных в пользовательском поле представлений (dsm()
использует Krumo, что очень удобно).
if ( arg(0) == 'node' && is_numeric(arg(1)) ) {$node = arg(1);}
Этот код работает только в том случае, если пользователь находится на странице узла. Не имеет значения, является ли путь псевдонимным. Так что в Представлениях это не сработает.
Если вы создаете представление, отображающее узлы, вы можете добавить поле node:id, чтобы получить идентификатор узла узла, которому принадлежит строка. Я считаю, что нет необходимости использовать пользовательские представления (или модуль PHP представлений, если вы используете Drupal 7).
Если вы пытаетесь получить идентификатор узла ссылочного представления, добавьте связь с другим узлом через ссылку на узел первое поле.