О проекте

Данный сайт попытка повысить коммуникацию самых активных разработчиков на CMS Drupal - блоггеров. Если Вы ведете свой блог о Друпале, значит Вы готовы делиться вашими знаниями, помочь другим. Не всегда ваши знания доходят до потребителя. Задача данного сайта агрегировать знания различных блогов в единую ленту и привести на Ваши блоги активных пользователей.

Активность пользователей на Вашем сайте будет дополнительным стимулом к дальнейшей работе.

Удачи во всех Ваших начинаниях!

Будьте осторожны с Views Customfield

-5 votes
+
-

это перевод блогпоста с нашего официального сайта - http://pixeljets.com/blog/be-careful-views-custom-field.
В одном проекте на Drupal 6, который мы делали, с завидной периодичностью обнаруживались какие-то загадочные баги. Наши сравнительно сложные страницы, сделанные через views, и использовавшие Views custom field, постоянно ломались. Вывод php поля мог сломаться, например, когда новое CCK поле добавлялось к какому-то типу ноды, или когда при просмотре views пользователь выбирал определенное значение в exposed фильтрах.
Код моих php полей был очень простой, на уровне:
<?phpif ($data->field_node_status_value > 2) {  echo l("Some action", 'test/url');}?>
Я потратил несколько часов на дебаг этой проблемы - и, проверяя sql запросы, сгенерированные вьюсами, я заметил, что алиас поля, возвращаемый вьюсами, может быть разным при определенных условиях. Эта информация помогла мне найти связанные с этой проблемой топик на д.орг: http://drupal.org/node/701798
Для меня оказалось сюрпризом то, что оказывается нельзя полагаться на данные из переменной $data в php поле, предоставляемом модулем views customfield! Views постоянно переименовывают имена полей, которые они дергают из базы
(когда новое поле было добавлено в вывод views, когда новое поле добавлено в ноду, когда используется какой-то exposed фильтр, и так далее), и на такие сырые данные просто нельзя надеяться. merlinofchaos, создатель views, подтверждает, что это не баг, а фича - http://drupal.org/node/361756 .
Я решил все свои проблемы переносом php кода в тплки темы:
<?php$status = $row->{$view->field['field_node_status_value']->field_alias};if ($status > 2) {  echo l("Some action", 'test/url');}?>
Самое страшное в этой истории то, что куча народа использует views customfield и совершенно не предполагает, что это рано или поздно приведет к проблемам. Надеюсь, они очнутся и обновят описание своего модуля, если уж пофиксить эту проблему так сложно.
Blog categories: DrupalТемизация Drupal

Полный оригинальный материал:

Sidashin.ru