Во Views можно переопределить любое поле, используя пункт "Rewrite the output of this field", все это знают. Там проблема с PHP, но она вроде решается сторонним модулем(не напомните кстати каким?).
Но возникла задача перехватить и изменить данное поле из стороннего модуля, и я как-то подрастерялся, ибо вывод Views не перехватывал никогда.
Кто-нибудь может подсказать, в каком хуке можно на лету изменить готовый views с уже сформированными полями, который вот-вот выведется? Или какие тут могут быть решения?
Или как вариант - можно натравить Views на файлы, расположенные не в папке темы, а в папке модуля. Только как указать это Views?
Комментарии
sites/all/modules/views/docs/docs.php
можно добавиь свою preprocess функцию в которой изменить значения строк
можно в шаблоне строки изменить переопределив хук views_view_fields
Где добавить то? Если в модуле, то как называть?
вшыли название своей вьюхи
Ага, hook_views_pre_render вроде подходит. Спасибо, не смог найти этот файлик.
я вообще то имел другое но в этом хуке может тоже получится перехватить
хотя по моему там перехватывать не очень кошн=ерно - как говрится
А почему? Как раз поля сформировались, мне там нужно просто автозамену некоторую сделать. Самое то. То же самое делается через темизацию, но мне нужно в модуле.
Всё правильно делаете, для этого хук и существует. Как он может быть не кошерным - ума не приложу...
ну это как бы общий хук общая точка входа для всех вьюсов
Можно было прописать конкретно для этой вьюхи.
Конечно легче все запихать в 1 общий хук и потом разгребать кучу кода примерно такого вида
function hook_views_pre_render($view){
if($view->name=='view_!'){
изменяем что то...
}
if($view->name=='view_!'){
изменяем что то...
}
if($view->name=='view_!'){
изменяем что то...
}
}
Ну у меня одна вьюха - я и проверяю. А вы уверены, что в Друпал 6 для каждой можно свой хук сбацать? Как называться будет для "taxonomy_term" например?
для таксономии насколько я помню нельзя там какая то страшная замута об этом все плачут и негодуют а для любой другой можно
Обычный вид, ничего необычного. Видимо просто ваш метод не работает в реале.
в реале как это делается описано здесь http://pro-cosmos.blogspot.ru/2012/10/views-viewsviewfields.html
еще плюс такого метода заключается в том что шаблон вьюса можно положить в модуль а не в тему
еще можно прописать свою пррепроцесс функцию , чтобы не пихать код в шаблон
PS
Спасибо Dmytro Danylevskyi
за статью
Ну да, плюс как раз в том, что можно темизацию в модуле оставить - и только. Я вначале сделал через темизацию, но второй метод оказался более простой. Ибо в темизации же нужно само значение вытаскивать ещё из HTML и в итоге формировать самому внешний вид поля.
В итоге независимо от того, что там изменится в виде с этим полем - у него это поле останется жестко сконфигурированным мною в файле, что нехорошо. При перехвате же через hook_views_pre_render мы имеем дело с чистыми данными.
чтобы изменить данные перед парсингом их в шаблоне
можно не переопределять шаблон а добавить только своб препроцесс функцию
пример кода (нужные участки кода заменить на свои):
/**
* препроцес функция для строки шаблона вьюса
* @param array $variables
*/
function hook_preprocess_views_view_fields__[viewsname]__[display](&$vars) {
$vars['fieldname'] = round($vars['row']->node_data_field_product_price_field_product_id_value);
}
Проверяли, уверены, что в Drupal 6 работает?
конечно и не раз, пример кстати из рабочего кода взят