Проверка php-кодом аргумента Views

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

Аватар пользователя IStranger IStranger 3 августа 2011 в 23:06

Доброго времени суток уважаемому Сообществу! Помогите пожалуйста в решении небольшой проблемы.
Есть материалы определенного типа от различных авторов, которые извлекаются при помощи Views. Чтобы вывести материалы определенного автора можно создать фиксированный аргумент (= ID авторизованного пользователя).
У меня стоит задача вывести все материалы, кроме тех, которые созданы авторизованным пользователем. Я так понимаю нужно сменить "режим проверки" аргумента, на "php-кодом". Получится что-то вроде этого:
 return ( (int)$argument !== (int)$view->$node->$uid );

Только вот из каких полей и методов состоит объект $view и как добраться до заветного поля $uid не знаю.
Подскажите пожалуйста, кто знает. Или есть более нативный способ настроить представление?

зы: со структурой объектов обычно вообще проблем не испытываю, просто печатаю var_dump( $view ) и print_r( $view ) и изучаю где какие данные хранятся, но в данном случае эти процедуры не проходят -> видимо выводл заблокирован. Может все же можно распечатать объект.

Комментарии

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 4 августа 2011 в 3:16

"InternetStranger" wrote:
Только вот из каких полей и методов состоит объект $view и как добраться до заветного поля $uid не знаю

Вы поставьте модуль Devel, там есть удобный просмотр массивов/объектов через Krumo

<?php

krumo

($var);
kpr($var);

?>

Насчёт как добраться

Можно ещё поставить аддон Theme developer, там работает визуальное представление, как файрфокс

Или, как вариант, можно так:

В своём модуле (или template.php) примерно такое

<?php

function YOURMODULENAME_preprocess_views_view(&$vars) {
  
  if (
$vars['name'] == 'yourviewname' && $vars['display_id'] == 'yourviewdisplayname') {
  
  
kpr($vars);
 }
}

?>

Также объект вида можно смотреть из разных шаблонов вида

Аватар пользователя IStranger IStranger 5 августа 2011 в 20:53

Спасибо большое за советы.
Крайне пригодились. Devel стоит, но Крумо-выводом пользоваться не умел [ kpr() и krumo() чем-нибудь отличаются? ].
Из этого же поля научился выводить:

 
krumo($view);
die(':)');

Либо же по данной выше рекомендации в template.php в базовом шаблоне(препроцессе) вьюхи.

Я кстати неверно понял назначение поля "Проверка " <- это типа валидация аргумента (пригоден он, или нет). Поэтому задачи, подобные моей решаются динамическим добавлением (/изменением) фильтра. Много полезного нашел в статьях: Views Argument Handling Code и Change the page title of a view in Drupal + Views 2 using Argument Handling Code.

PS: По закону жанра свою задачу решил не пребегая кодингу с помощью стандартного фильтра Вьюхи "Текущий пользователь". Там можно инвертировать фильтр (т.е. вывести все, что не принадлежит авторизованному пользователю).