[РЕШЕНО] вывод полей Views PHP

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

Аватар пользователя MaximumofmaX MaximumofmaX 2 июля 2012 в 15:39

никак не разберусь как вывести значение поля в Views PHP

вывожу заголовок так, возвращает значение, всё нормально.

<?php 
print $row->title;
 
?>

вывожу body или cck field таким же образом, возвращает id ноды.

<?php 
print $row->body;
 
?>
<?php 
print $row->field_video_code;
 
?>

нифига не соображу как вывести значение поля

Комментарии

Аватар пользователя sg85 sg85 2 июля 2012 в 20:44

На сколько помню, $row - это объект, являющийся результатом SQL запроса views, т.е. $row = db_fetch_object($result);, какие поля у него бывают смотрите в самом SQL запросе.

Аватар пользователя MaximumofmaX MaximumofmaX 3 июля 2012 в 12:47

Available variables

$view: The view object.
$handler: The handler object.
$static: A variable that can be used to store reusable data per row.
$row: Contains the retrieved record from the database (e.g. $data->nid).
$row->field_video_code: Content: video_code
$row->php: Global: PHP
$row->title: Content: Title
$row->body: Content: Body
$data: Contains the retrieved record from the database (e.g. $data->nid).
$value: Value of this field.

вот эти переменные выдаёт вьюха, но body и field_video_code которые мне нужны, возвращают айди ноды.

Аватар пользователя sg85 sg85 3 июля 2012 в 17:43

"MaximumofmaX" wrote:
$data: Contains the retrieved record from the database (e.g. $data->nid).

"imarat" wrote:
я же написал, как выводить - print $data->field_name

Тут же написано, что $data содержит результат запроса, соответственно, как у него называются поля можно посмотреть в самом запросе, скажем если запрос SELECT node_nid, node_field_video_code....(к примеру) то Вам понадобится $data->node_field_video_code, смотрите какой запрос строит Ваша вьюха.

В крайнем случае print_r

Аватар пользователя MaximumofmaX MaximumofmaX 3 июля 2012 в 18:35
SELECT node.nid AS nid, node.title AS node_title, node.created AS node_created, 'node' AS field_data_field_video_code_node_entity_type, 'node' AS field_data_body_node_entity_type
FROM
{node} node
WHERE (( (node.status = '1') AND (node.type IN  ('video')) AND (node.language IN  ('en')) ))
ORDER BY node_created DESC

print $data->field_data_field_video_code_node_entity_type; возвращает "node"

print_r - выдаёт ошибку

Аватар пользователя sg85 sg85 3 июля 2012 в 18:54

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

Аватар пользователя MaximumofmaX MaximumofmaX 3 июля 2012 в 19:15

поле дополнительное одно и выведено, и исключено из вывода. если вывожу через обычные поля (без PHP) с использованием тегов подстановки[field_video_code] всё отображается

Аватар пользователя sg85 sg85 4 июля 2012 в 0:45

такое возможно, если данные поля тянутся дополнительным select запросом по nid(обычно не на прямую, а чем-то вроде node_load и прочим), проверить это можно либо логами devel(можно увидеть сам запрос) или в исходниках вьювс(можно найти функцию, вызывающую этот запрос)

Аватар пользователя imarat imarat 4 июля 2012 в 2:07

это поле должно быть добавлено во вьюхе и расположено выше пхп-поля, тогда будет выводить. Ставьте девел и dprint_r($data)

Аватар пользователя Bafur Bafur 12 ноября 2016 в 22:47

Пытался таким способом вывести [path]. Посмотрел через dprint_r($data) - нету его значения там. В итоге, нашел способ на друпал.орг через функцию:

<?php
$postpath 
drupal_lookup_path('alias',"node/".$data->nid);
echo 
$postpath;
?>

В этом случае нет необходимости выводить поле [path] перед полем php.