Drupal → Preprocess функции для представлений Views

22.07.2011

Основные preprocess функции Views:

  • hook_preprocess_views_view — вызывается перед темизацией всего представления.
  • hook_preprocess_views_view_fields — вызывается перед темизацией строки с полями.
  • hook_preprocess_views_view_field — вызывается перед темизацией поля в строке.
  • hook_preprocess_views_view_unformatted — вызывается перед темизацией списка Unformatted list.
  • hook_preprocess_views_view_list — вызывается перед темизацией списка HTML list.
  • hook_preprocess_views_view_grid — вызывается перед темизацией Grid-а.
  • hook_preprocess_views_view_table — вызывается перед темизацией таблицы.
  • hook_preprocess_views_view_summary — вызывается перед темизацией упорядоченного summary списка.
  • hook_preprocess_views_view_summary_unformatted — вызывается перед темизацией неупорядоченного summary списка.
  • hook_preprocess_views_view_rss — вызывается перед темизацией rss ленты.
  • hook_preprocess_views_view_row_rss — вызывается перед темизацией строки в rss ленте.
  • hook_preprocess_views_exposed_form — вызывается перед темизацией формы с раскрытыми фильтрами.

И несколько других редких функций. Полный список зарегистрированных хуков темизации можно посмотреть с помощью Devel по адресу devel/theme/registry.

Написанное актуально для
Views 3.x
Похожие записи

Комментарии

Гость
27.10.2011, 23:22

не могу заставить работать
hook_preprocess_views_view_unformatted

не работает :(

function hook_preprocess_views_view_unformatted(&$vars){

$vars['newvar'] = 'testvar';
}

можно написать пример изменения существ переменной этим хуком добавление новой

а еще в шаблоне вьюса
views-view-fields-VIEWS_NAME.tpl.php
есть массив значений полей fields
Как изменить в хуке эти переменные?

вместо hook надо писать имя модуля или темы

Гость
28.10.2011, 01:14

ну это просто я опечатался

function mymodule_preprocess_views_view_unformatted(&$vars){
$vars['newvar'] = 'testvar';
}

вот этот вариант тоже не пашет

function garland_preprocess_views_view(&$vars) {
    
    $vars['a1aaaaa']='55555555555';
    
}
Гость
28.10.2011, 14:58

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

Станислав
08.06.2012, 23:58

Скажите пожалуйста, а переключатель отображения контента для представления Views типа grid<->list<->table, как, например, здесь делается именно с помощью preprocess?

Станислав, видел модуль, название не вспомню, но можно и в одном из хуков

Станислав
09.06.2012, 21:46

Спс, обидно и ужасно неохота, но видимо придется решать эту задачу так, как все у нас и решается, а именно через жо...у с помощью скальпеляв в виде hooks...
Неудивительно, что Drupal отнюдь не для ламеров с таким подходом к решению казалось бы тривиальных задач.

Гость
10.06.2012, 03:24

будет интресно узнать с помощью какого хука можно это сделать
тк на моем опыте я так и не смог этого сделать
пришлось чуть править модуль views хотя я понимаю что это плоха
получилось вот так buysd(dot)ru

Станислав
10.06.2012, 03:50

Да пока с хуками решил повременить ибо сложно все это для начала, накопал модуль Views Modes, походу он именно для решения моей задачи. По идее он создает новый блок, который можно поместить над въюхой. Так вот блок то создается, а нифига не отображается в режиме просмотра... Вот, пока бъюсь над этим...

Станислав
11.06.2012, 05:43

В общем задача с переключателем видов Views как grid<->list<->table решилась без хуков, препроцессов и костылей для самого модуля Views банальной установкой и настройкой модуля Views Modes.
Есть ньюансы, что сам переключатель выведен в отдельный блок, появляющийся среди доступных после установки модуля Views Modes, а выбор видов отображения вы делаете сами путем добавлением новых представлений в виде режимов, т.е. там где было добавить новую страницу к представлению или блок теперь появится еще и режим при редактировании текущего представления.

Гость
11.06.2012, 23:17

в итоге у вас получилось 3 вьюса или 1 вьюса и 3 дисплея к нему?

Гость
11.06.2012, 23:53

1 вьювс и 3 дисплея к нему в виде режимов, где можно переопределить все кроме фильтров .

Станислав
12.06.2012, 00:00

Короче получилось то, что вы написали. 1 представление с 3 дисплеями в виде режимов. Пререопределять в них можно режимы вывода- таблица-сетка, HTML-список и т.д, количество выводимых элементов и настравать их по своему вкусу.
Собственно по конструкции Views Modes - это и есть набор хуков для Views, просто цель у него одна - именно создание альтернативных режимов отображения одного и того же представления.

Гость
29.06.2012, 12:44

Подскажите пожалуйста, как критерии сортировки views отделить от критериев фильтрации?
Я, конечно, понимаю, что критерии сортировки views автоматически объединяются с критериями фильтрации при вынесении фильтров в отдельный блок...
Но мне нужны по сути 2 отдельных блока: блок фильтров и блок сортировки для одного и того же представления...

P.S. Может вопрос не совсем по теме views preprocess, но я так и не нашел более подходящей темы.

Гость
29.06.2012, 13:22

форму фильтров можно изменить через хук
hook_form_views_exposed_form_alter(&$form, $form_state)

Гость
29.06.2012, 16:37

Мне не форму фильтров надо поменять, а отделить сортировку от фильтров

Гость
29.06.2012, 16:54

Чтобы стало понятнее, как на commercebox вынести критерии фильтрации. Загвоздка в том, что сам блок раскрытых фильтров занят именно фильтрами, и сортировке там не место. Для сортировки нужен другой блок, который будет непосредственно над содержимым представления.

Гость
29.06.2012, 22:49

если вьюха не аяксовая то можно сделать самому блок для сортировки тк для сортировки просто нужно будет в урл добавлять параметры типа
sort=price&order=asc
это примерно я написал
я таким образом делал здесь
http://hiend.hifikazan.ru/akusticheskie-sistemy/aktivnaya-akustika/bw
еще как вариант можно просто вывести в 2х местах две exposed формы (программно или 1 пргораммно др стандартно) и в 1 сделать фильтра а в др сортировку

Гость
30.06.2012, 17:43

для сортировки просто нужно будет в урл добавлять параметры типа
sort=price&order=asc

К сожалению простое добавление в шапку views формы сортировки проблемы не решает. Проще говоря фокус не работает.

вот кстати пример...

Простите за банальный вопрос, но это для Drupal 7 или более ранней версии, и куда этот нужно код вставить чтобы он заработал?

Гость
02.08.2012, 13:44

Как вывести CCK поле в views-view-fields.tpl.php ?

Никита
11.09.2012, 09:08

У меня drupal 7.15, не переопределяется hook_preprocess_views_view_fields в теме, а вот другие хуки - работают. В апш написано, что должен работать http://api.drupalize.me/api/drupal/function/template_preprocess_views_v… . Есть идеи, из-за чего это происходит? На опечатки все очень тщательно проверил.

Добавить комментарий