Одно из самых полезных полей, которое предоставляет CCK модуль — это Node Reference. Задача его тривиальна и понятна — связать контент сайта отношениями, что легко понять на примерах:
Задача, с которой пришлось столкнутся мне состоит в том, как показывать это поле:
CCK по умолчанию сам оформляет множественный или одиночный выбор node reference, как список или просто ссылку на соответствующий нод. Задача вывода рецепта предполагает, что рецепт и ингридиент являются нодами.
Соответственно, при рендеринге контента Views`ами мы получим:
Вместо:
Решение данной задачи к сожалению на Google и Drupal.org я не нашел, а потому пришлось выкручиваться, и получилось это довольно просто и красиво.
Для ноды Продукта добавляем еще одно мультиполе Текст, которое в Fields вьюхи ставим после Node Reference.
А в темплейте views-view-fields.tpl.php (или конкретной вьюхи как Вам нужно) пишем магию:
Это позволит отрендерить вьюху подменяя титл поля Node Reference. Есть ли у Вас решение для данной задачи?
- Компания, у которой в контенте должны быть ссылки на Рабочих
- Футбольный игрок, со связью на ноду его Статистики
Задача, с которой пришлось столкнутся мне состоит в том, как показывать это поле:
- Реценты, которые состоят из различных ингридиентов(1 курица, 2 апельсина, 50гр специй)
CCK по умолчанию сам оформляет множественный или одиночный выбор node reference, как список или просто ссылку на соответствующий нод. Задача вывода рецепта предполагает, что рецепт и ингридиент являются нодами.
Соответственно, при рендеринге контента Views`ами мы получим:
Курица по болгарски(Рецепт)
- Курица(Ингридиент)
- Апельсин(Ингридиент)
- Специи(Ингридиент)
Вместо:
Курица по болгарски(Рецепт)
- 1 курица(Ингридиент)
- 2 апельсин(Ингридиент)
- 50гр специй(Ингридиент)
Решение данной задачи к сожалению на Google и Drupal.org я не нашел, а потому пришлось выкручиваться, и получилось это довольно просто и красиво.
Для ноды Продукта добавляем еще одно мультиполе Текст, которое в Fields вьюхи ставим после Node Reference.
А в темплейте views-view-fields.tpl.php (или конкретной вьюхи как Вам нужно) пишем магию:
<?php
$nids = array();
?>
<?php foreach ($fields as $id => $field): ?>
<?php
if($id == 'field_product_nid') {
$nids = array_shift($field->handler->field_values);
continue;
}
if($id == 'field_product_title_value') {
$items = array();
$index = 0;
$titles = array_shift($field->handler->field_values);
foreach($titles as $title) {
$items[] = l($title['value'], 'node/' . $nids[$index++]['nid']);
}
// TODO: theming here
$field->content = theme('item_list', $items);
}
?>
<?php if (!empty($field->separator)): ?>
<?php print $field->separator; ?>
<?php endif; ?>
<<?php print $field->inline_html;?> class="views-field-<?php print $field->class; ?>">
<?php if ($field->label): ?>
<?php print $field->label; ?>:
<?php endif; ?>
<?php
// $field->element_type is either SPAN or DIV depending upon whether or not
// the field is a 'block' element type or 'inline' element type.
?>
<<?php print $field->element_type; ?> class="field-content"><?php print $field->content; ?></<?php print $field->element_type; ?>>
</<?php print $field->inline_html;?>>
<?php endforeach; ?>
Это позволит отрендерить вьюху подменяя титл поля Node Reference. Есть ли у Вас решение для данной задачи?