Доброго времени суток.
Возник вопрос... с помощью CCK были созданы 2 поля для содержания страницы. Дальше содержимое полей необходимо разместить в 2 абсолютно разных блока, находящихся в разных местах сайта (грубо говоря один - в шапку, другой на дно сайта). Пытался это оформить с помощью шаблонов, но получилось лишь отображать в одном из этих блоков необходимое для него содержимое. Панели не подходят (изза требований к верстке). Как грамотно вывести содержание этих полей?
Комментарии
создайте view как блок, видимость блоков настраивается.
Создавай-те регионы там где нужно по дизайну, многое можно перекрасить
похожая тема http://drupal.ru/node/13488
Да, спасибо, уже видел. Проблема в том, что пробовал всю эту "массу решений", которые там предлагали, и ответа не нашел. Вообще спасибо за ссылку, но я лазаю по drupal.ru и drupal.org уже 5 дней, разумеется я не сразу тупо создал эту тему.
Нужно чтобы в этом view как блоке отображалось содержание лишь одного поля, притом в зависимости от страницы, на которой находится пользователь. То есть в ноде у нас 2 переменных - $content1 и $content2. В блоке должна выводиться переменная $content1, в другой части $content2. И на каждой странице сайта в этих частях нужно чтобы выводилось содержание ноды, помещенной на данную страницу.
ну в node.tpl.php можно пихнуть
print $content1; // $node->cck[0] или че-нить в этом роде.
}
else if ($node-type == "story") {
print $content2;
}
А вообще var_dump($node) и флаг в руки
//$node->type Знак больше не пишется блин
Благодарю, разобрался )
Чуть позже опишу как сделал не влезая в код... еси кому то горит, пишите в личку - торопите, просто нуна проект заканчивать... как закончу так все подробно опишу.
Всем участникам дискуссии спасибо.
Итак, все же расскажу сейчас, раз кому то это нужно ) Решение на самом деле выглядит довольно простым, однако новичок в drupal до этого дойти может не сразу... ощутил на собственной шкуре ) Кроме того не сказал бы что оно является грамотным, уверен что это все можно оформить как то правильнее.
Опишу способ для 2-х нод.
Потребуются следующие модули: CCK, Views и Content Template.
1. Создаем новый тип материала. Назовем его page1. Ничего особо не меняем и сохраняем. Дальше нажимаем изменить -> добавить поле. Пускай имя у него будет "Текст вверху", тип поля - text field. Добавляем, потом заходим во вкладку "управление полями" и запоминаем машинное имя этого поля. Для примера пускай оно называется "field_".
2. Создаем шаблон для этого типа материала. Во вкладке "Текст" ставим галку и убираем печать только что созданного нами поля, а также заменяем вторую переменную на
$node->content['body']['#value']
(на самом деле в шаблоне вообще можно оставить только строчку<?php print $node->content['body']['#value'] ?>
).3. Создаем еще один тип материала (например "page2"). Так же средствами CCK создаем еще одно поле ("field__"). Так же правим его шаблон. Теперь у нас 2 типа материала, помещая которые на страницы сайта выводится только основное поле, "Текст вверху" в нодах не печатается.
4. Дальше добавляем материал сайта -> page1. Пишем что хотим видеть наверху, что внизу и адрес страницы, где мы хотим это видеть. Добавляем. Теперь создаем еще один материал - page2. Собственно, тут все то же. Для наглядности пускай страницы называются node/1 и node/2.
5. Создаем регион, в котором должен содержаться контент верхних полей (если он еще не создан). Как это делается описывать не буду, тем с регионами полно.
6. Создаем вид, пускай он называется "page1view". Ставим галку где блок, типы видов - вид списка (list), документов на блок скока хошь, не суть важно пока. Дальше добавляем поле "Text: Текст вверху (field_)" и добавляем фильтр "Документ: Тип", "Одно из" page1. Сохраняем. Теперь создаем вид "page2view" для page2 (то же, кроме field__ и в фильтре page2).
7. Переходим в раздел "Блоки" в меню навигации. В тот регион, где мы хотим видеть содержание верхнего текста ставим оба вида, сохраняем. Дальше тут же в блоках их настраиваем их отображение (настроить -> меняем в самом низу радиобатон на "Показывать только на перечисленных страницах", указываем для page1view node/1, для page2view node/2).
8. Теперь на тех страницах, где это нужно выводится соответствующий вид с верхним полем ноды.
Подводные камни и недостатки:
Во первых данный способ прокатит если таких страниц нужно немного, так как для каждой такой страницы нужно создавать свой тип материала и свой вид. В моем случае мне нужны только 2 таких страницы, поэтому пока оставлю все так.
Во вторых уверен, что это не самое грамотное решение и что можно использовать только один тип материала и один вид, выводя в нем конкретную переменную конкретной ноды, которая загружена на странице. Проблема в том, что как это сделать я не знаю.
Собственно комментарии приветствуются, я разбираюсь в drupal меньше недели, поэтому сильно не кидайтесь камнями )
http://drupal.ru/node/10722 - странно, что раньше не натолкнулся >_< как все просто оказывается х_х