Drupal: замена значения поля в View

У меня есть Drupal 5 View (должно быть «Views 1»), которое содержит поле Event_StartTime, которое обычно отображается для полей с реальной датой внутри. Но у меня также есть несколько записей со значением поля Event_StartTime, например 31 декабря 1969 - 20:00, что выглядит плохо на виду, и мне нужно заменить их каким-то настраиваемым ярлыком, например «Дата недоступна».

Могу ли я каким-то образом ввести это условие (если value = x показывает значение y) в поле зрения? Даже когда я печатаю в SQL «Дата недоступна», в представлении будет отображаться пустое поле.

Подводя итог, общая проблема заключается в том, что поля просмотра являются своего рода ограничивающими, и иногда вам просто нужно заменить какое-то значение поля, но это либо «дата, либо ничего», либо «идентификатор ссылки на узел, или ничего».

P.S. Ситуация может быть немного сложной, потому что я использую модуль «Бонус: экспорт представлений», который заставляет мое представление возвращать данные CSV.


person AlexA    schedule 02.09.2009    source источник


Ответы (2)


Основываясь на комментарии Хенрика, мне кажется, что тематика - лучшее место для этого. Вам нужно будет добавить функцию в ваш файл template.php, чтобы переопределить это конкретное представление. См. Документацию по тематике Views 1. На основе этой документации вы создаете функцию с именем вашего представления формы.

function THEMENAME_view_view_VIEWNAME($view, $type, $nodes, $level = NULL, $args = NULL)

тематизировать весь вид. $nodes - это массив частично загруженных узловых объектов, которые включены в ваше представление. Вы можете загрузить каждый узел и проверить значения поля Event_StartTime примерно так:

foreach ($nodes as $id => $node) {
  $temp_node = node_load($node->nid);
  //now check value of Event_StartTime assuming that is what you named the field
  if ($temp_node->Event_StartTime === 'Dec 31 1969 - 8:00pm') {
    $temp_node->Event_StartTime = 'No Date Available';
  }
 //output the fields of your view . . .
}

Я только показал, как проверить значение поля Event\_StartTime, и я не уверен, каково его фактическое значение. 31 декабря 1969 г. предшествует датам, возвращаемым функцией time(), поэтому, если это не сработает, вы можете проверить, Event_StartTime === '', что может быть правдой, если поле события просто оставлено пустым. Вам все равно придется оформить остальные поля и выводить их в формате HTML, что может оказаться слишком сложной задачей, чтобы просто изменить вывод одного поля. Вы также можете переопределить вывод отдельных полей. Я этого не делал, поэтому не могу провести вас через это, но ссылка, которую я дал выше, содержит некоторую документацию по переопределению функций тематики полей.

person jergason    schedule 03.09.2009

Я больше не знаком с Views1, но думаю, у вас есть как минимум два варианта:

  1. На уровне тематики - вы можете переопределить шаблон поля и поставить там отметку о конкретном значении даты, заменяя его при обнаружении. Конечно, эта проверка будет зависеть от форматирования дат, поэтому, если вы когда-нибудь это измените, вам также придется отрегулировать проверку.
  2. На уровне создания представления - вы можете выполнить представление «вручную» из кода и проверить объект представления сразу после создания экземпляра и / или после выполнения, но перед отрисовкой (см. Ее пример управления объектом представления в Views2). Вы можете манипулировать свойством result после выполнения, но перед рендерингом, или вы можете добавить туда обратный вызов перед рендерингом сразу после создания экземпляра (но я не уверен, возможно ли это уже в Views1).
person Henrik Opel    schedule 03.09.2009