Добрый день. С Новым Годом! С наступающим Рождеством!
А мы все копаем
Вводная:
Заводим виртуальные поля для наших данных :
<?php
/**
* Implements of hook_views_data().
*/
function MYMODULE_views_data() {
return array(
'my_db' => array(
// Виртуальное поле 1
'first_field_calc' => array(
'group' => t('My Utilites'),
'title' => t('Description field 1'),
'help' => t('Calculated Field'),
'field' => array('handler' => 'MYMODULE_handler_first_field_calc'),
),
// ***** skipped hrum-hrum ******
// Виртуальное поле 10
'ten_field_calc' => array(
'group' => t('My Utilites'),
'title' => t('Description field 10'),
'help' => t('Calculated Field'),
),
),
);
}
?>
Возможно ли в обработчике ПЕРВОГО поля (он находится здесь MYMODULE_handler_first_field_calc.inc) присвоить значения и остальным полям с условными номерами 2,3,4,5,6,7,8,9,10 ?
Как это можно сделать изящно?
Само собой разумеется что значение первого поля обработчик вернет через RETURN $some_data;
P.S. Плодить однотипных обработчиков неохота. Все решил бы небольшой цикл в первом обработчике.
Спасибо.
Комментарии
Если вирт-поля поля будут использоваться только в "специальных" вьюсах , тогда возможно нет смысла использовать field_handler, а имеет смысл использовать views_plugin_display ?
В методе render вернете html Ваших "полей" и все..
Или пусть это будет одно поле(с одном хендлером) разных "типов".
Тип выбирается в настройках поля (метод options_form и сопутствующие)
И обрабатывайте вывод каждого поля, в соответствии с его "типом" в одном хендлере.
Вас не затруднит привести небольшой пример.
Я там еще не плавал
Про views display или field handler с формой настройки?
Я с удовольствием освою оба варианта.
Меня бы например устроил вариант хандлера одного поля, если это поле массив.
Что-то с полпинка не получилось.
Views_display нашел пример ( http://internetdevels.ru/blog/create-display-extender-plugin-for-views ) и если правильно его понял, то там через форму интерфейса в ручном режиме добавляются новые поля.
У меня же случай такой, что хандлер получает информацию из другого поля и в зависимости от него генерирует 10...20 значений, к которым я во ВЬЮШке и хочу иметь доступ.
Спасибо.
А не проще ли через serialize передать массив? А в шаблоне его развернуть?
Убрал 30 полей, засунул все в один ассоциированный массив, который засунул через serialize в одно поле. Избавился от 30% однотипного кода, который занес в цикл + оптимизировал по мелочи. Сейчас из 100 полей во ВЬЮШке останется только 70 в интерфейсе Остальные "разворачиваются" в шаблоне через тот-же цикл
Рад как слон