Вывод полей ноды в разных местах шаблона.

Главные вкладки

Аватар пользователя dgastudio dgastudio 24 февраля 2009 в 20:45

Уважаемые, подскажите.

По дизайну, у меня должна быть разбивка полей ноды в разных местах дизайна. как мне это решить?

поясняю. Например при выводе видео у меня должно быть:

заголовок и краткое описание над баннером (который выводится в блоке шаблона).
полное описание после баннера.

само видео в отдельно сгенерированом участке.

В CMSMADESIMPLE, при создание доп. регионов в странице, автоматом добавляются поля для заполнения при создании новой страницы. Тут я никак не разберусь.

Комментарии

Аватар пользователя dgastudio dgastudio 25 февраля 2009 в 10:54

да я уже начинаю понимать что не прокатит.

попытаюсь обьяснить еще раз.

у меня есть нода, в которую при создание я вбиваю.
- название
- краткое содержимое
- полное содержимое
- допольнительное поле 1 (видео)
- допольнительное поле 2 (аудио)
- допольнительное поле 3 (ссылка)

теперь в шаблоне page.tpl.php я хочу например вывести эту ноду. print $content.

и у меня выводится все вместе.

а я хочу отдельно. элементарныый пример, поменять местами Видео и Название.

Аватар пользователя dgastudio dgastudio 25 февраля 2009 в 13:21

так я спрашиваю, есть ли возможность выводить данные в шаблоне через например:

print $teaser

print $body

print $node_field1

print $node_field2

а через css, это не решение.

Аватар пользователя glu2006 glu2006 25 февраля 2009 в 14:02

node-тип_материала.tpl.php
почитайте про темизацию благо инфы по этому предостаточно.

поставьте модуль http://drupal.org/project/devel
чтоб не возникало вопросов а как эти переменные называются в объекте $node

и выводите в своем шаблоне не print $content
примерно так:

<?php if($teaser) {?>
  <div class="main-picture"><div id="pict">
    <div class="border"><?php print $node->field_pict_image[0]['view'];?></div>
    <div class="clear"></div>
    <div class="titles"><h2><?php print $title ?></h2></div>
    <div class="descr"><?php print $node->field_pict_desc[0]['view'];?></div>    
  </div></div>
  <div class="clear"></div>
<?php } else {?>
  <div class="block-picture">
    <?php $img = theme('imagecache', 'picture_mini', $node->field_pict_image[0]['filepath']);?>
    <?php print l($img, 'picture-gallery', array('html' => TRUE));?>
    <?php print l('<h2>'. $title .'</h2>', 'picture-gallery', array('html' => TRUE));?>
    <div class="descr"><?php print $node->field_pict_desc[0]['view'];?></div>    
  </div>
  <div class="clear"></div>
<?php }?>

это просто пример кода повторять его у себя не надо все равно ничего не покажет ))).

Аватар пользователя mc_cleanly mc_cleanly 2 марта 2009 в 22:46

Для ноды всё понятно, а вот как разбить $fields во views?

Конкретней:
Стандартный шаблон: views-view-fields.tpl.php

<?php foreach ($fields as $id => $field): ?>

<?php print $field->content; ?>

<?php endforeach; ?>

Какое окружение переменных будет у $fields?
Что-то типа такого:
<?php
echo "".$fields['created']."";
echo "

".$fields['title']."

";
?>

Хочеться сделать темизацию полей в этом одном шаблоне, а не использовать отдельные views-view-field--title.tpl.php и так далее.

Буду очень благодарен за комментарии.

Аватар пользователя mc_cleanly mc_cleanly 3 марта 2009 в 12:16

Разобрался с массивом объектов Smile
Отдельные переменные в $fields['variable']->content; где variable имя поля.

Но эти разборы я использую, когда больше таблицами верстал.
Сейчас делаю всё на div и совершенно не нужно копаться в темизации views, всё намного проще. Все элементы по умолчанию имеют такой же класс как и имя поля (class="field-content"). И дизайн вьюсы сводится лишь a)Установка очерёдности вывода полей во Views. б)Создание данных классов в css.

Надеюсь мои комментарии будут полезны ещё кому-то Smile