Тематическое представление для поля с несколькими значениями - PullRequest
1 голос
/ 25 июня 2011

Я знаю, что это, вероятно, вопрос n00b, но я везде искал ответ и ничего не нашел.

У меня есть поле с несколькими значениями CCK для "Характеристики", где у продукта может быть случайное числоиз нескольких функций, введенных для него.Я редактирую представление, чтобы можно было стилизовать вывод функций на странице продукта.

Прямо сейчас, на мой взгляд, я могу вывести весь список функций одновременно, используя:

<?php print $fields['field_features_value']->content ?> 

Это даст мне список всех функций, предоставленных для продукта.Но то, что я хочу сделать, это просмотреть и извлечь каждую отдельную функцию и отформатировать / оформить ее отдельно.Как именно я это сделаю?

Ответы [ 2 ]

0 голосов
/ 06 января 2012

Когда тематические представления слишком специфичны, я устанавливаю условия, отношения, параметры и все виды представлений , кроме полей. Единственное поле, которое я использую, - это идентификатор узла.

Тогда при выполнении темы я использую ...

$node = node_load($nid);

... чтобы получить объект узла. Вы можете проверить объект узла с помощью функции dpm, которая поставляется с модулем devel.

dpm($node);

Этот «метод» хорошо работает для узлов, и когда вам не нужны оптимизация или скорость, потому что, если вы собираетесь делать это с 1000 узлами, вам следует загружать узлы в пакетном режиме.

0 голосов
/ 28 октября 2011

Я снова столкнулся с этим вчера и часами пытался найти синтаксис в Google, но безрезультатно.

Мне удалось заставить это работать, но я должен признать, что это не лучший способ. Это дублирует часть работы, которую Views уже потенциально выполнила для нас, и ее следует рассматривать как метод грубой силы.

Мой вариант использования включал в себя создание каждого файла файлового поля в узле отдельно для каждой строки на основе узла:

<?php
// $Id: views-view-field.tpl.php,v 1.1 2008/05/16 22:22:32 merlinofchaos Exp $
 /**
  * This template is used to print a single field in a view. It is not
  * actually used in default Views, as this is registered as a theme
  * function which has better performance. For single overrides, the
  * template is perfectly okay.
  *
  * Variables available:
  * - $view: The view object
  * - $field: The field handler object that can process the input
  * - $row: The raw SQL result that can be used
  * - $output: The processed output that will normally be used.
  *
  * When fetching output from the $row, this construct should be used:
  * $data = $row->{$field->field_alias}
  *
  * The above will guarantee that you'll always get the correct data,
  * regardless of any changes in the aliasing that might happen if
  * the view is modified.
  */
?>
<?php

$output = explode('|', $output); // I've rewritten the field output in Views like this: [field_portfolio_image-field_name]|[nid]
$paths = $output[0]; // I've set filefield to show file paths rather than the file
$nid = $output[1]; // The NID is all that's really needed for this approach

$node = node_load($nid);
$slots = $node->field_portfolio_image;

foreach($slots as $prop) {
        print '<a href="'.$prop[filepath].'" title="'.$prop[data][description].'" rel="gallery-'.$nid.'" class="colorbox hidden">'.$prop[data][description].'</a>';
    }

?>

Я использовал модуль Devel здесь (ссылка на изображение для этого примера прилагается), чтобы получить нужные мне вложенные значения.

Devel view of fields used

Я знаю, что есть лучший, лучший способ сделать это, а не перезагружать данные узла, поскольку представления уже должны иметь доступ к этому при загрузке страницы.

...