Доброго времени суток уважаемому Сообществу! Помогите пожалуйста в решении небольшой проблемы.
Есть материалы определенного типа от различных авторов, которые извлекаются при помощи Views. Чтобы вывести материалы определенного автора можно создать фиксированный аргумент (= ID авторизованного пользователя).
У меня стоит задача вывести все материалы, кроме тех, которые созданы авторизованным пользователем. Я так понимаю нужно сменить "режим проверки" аргумента, на "php-кодом". Получится что-то вроде этого:
return ( (int)$argument !== (int)$view->$node->$uid );
Только вот из каких полей и методов состоит объект $view и как добраться до заветного поля $uid не знаю.
Подскажите пожалуйста, кто знает. Или есть более нативный способ настроить представление?
зы: со структурой объектов обычно вообще проблем не испытываю, просто печатаю var_dump( $view ) и print_r( $view ) и изучаю где какие данные хранятся, но в данном случае эти процедуры не проходят -> видимо выводл заблокирован. Может все же можно распечатать объект.
Комментарии
Попробуйте global $user; if($user->uid = $node->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);
}
} ?>
Также объект вида можно смотреть из разных шаблонов вида
Спасибо большое за советы.
Крайне пригодились. 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: По закону жанра свою задачу решил не пребегая кодингу с помощью стандартного фильтра Вьюхи "Текущий пользователь". Там можно инвертировать фильтр (т.е. вывести все, что не принадлежит авторизованному пользователю).