Темизация ноды с таксономией и CCK без использования VIEWS
Прислано: HIgor1968
ср, 03/12/2008 - 11:53
Товарищ с темы http://drupal.ru/node/22152 сподвиг на это описание:)
Тем более что только что сделал.
- node.tpl.php переименовываем в node-НашТипДанных.tpl.php
- убираем штатный вывод контента типа
<div class="content">
<?php print $content ?>
</div>Для разделения вывода списком и отдельных нод используем $page
<?php if ($page): ?> <?php //здесь выводим то что надо на отдельные ноды ?> <?php else: ?> <?php //здесь выводим то что надо для списка нод ?> <?php endif;?>
Теперь отдельно переменные для вывода полей:
Описание: $node->content['body']['#value']
Поле ССК в ноде: $node->ИмяCCKполя[0]['view']
Если полями ноды являются термины таксономии то вот конструкция
//Выводим все словари таксономии foreach(taxonomy_node_get_terms($node, 'vid') as $name3 => $value3) { $vocabulary = taxonomy_vocabulary_load($name3); echo '<div class = "pole_l0" id = "term' . $vocabulary->vid . '"><p><b>' . $vocabulary->name . ': </b>'; $cc = ''; $rr = ''; $ii = 1; foreach (taxonomy_node_get_terms_by_vocabulary($node, $name3,'description') as $name => $value1) { if($ii>1){$rr = ', ';} $cc = $cc . $rr . $name; $ii +=1;} echo $cc . '</p></div>'; }
НаименованиеСловаряТаксономии: термин1, термин2
Примеры темизации без использования вьюса только node.tpl.php и разбор массива $node:
- Объект недвижимости
- список новостроек
И напоследок не забываем конструкцию:
<?php print '<pre>'. check_plain(print_r($node, 1)) .'</pre>'; ?>
Для просмотра массива $node.
P.S.: Топик с исправлениями перенес на свой сайт
- HIgor1968's blog
- Для комментирования войдите или зарегистрируйтесь
Наименование термина: = Словарь?
- Для комментирования войдите или зарегистрируйтесь
Да, наименование словаря таксономии.
- Для комментирования войдите или зарегистрируйтесь
спасибо за информацию!
попутно вопрос - возможно ли выключить рендеринг контента в друпале для данного типа ноды ?
потому как в $node->body лежит уже готовое тело, которое теперь и не нужно. возможно получится выиграть в производительности.
- Для комментирования войдите или зарегистрируйтесь
Задача конечно интересная, но для этого надо разбиратся с модулем node. Возможно решается перекрытием какой-то функции.
- Для комментирования войдите или зарегистрируйтесь
поковырял node.
решение не очень, но работает:
node.module:
function node_view($node, $teaser = FALSE, $page = FALSE, $links = TRUE) { $node = (object)$node; $node = node_build_content($node, $teaser, $page); if ($links) { $node->links = module_invoke_all('link', 'node', $node, $teaser); drupal_alter('link', $node->links, $node); } // Set the proper node part, then unset unused $node part so that a bad // theme can not open a security hole. // alex // if($node->type == 'reality') // skip render for reality nodes if($node->tnid != 0) // skip render for this tnid $content = drupal_render($node->content);
- Для комментирования войдите или зарегистрируйтесь
Спасибо. Прочитал ваш пост и в голове стало проясняться, как это работает, и что нужно сделать в моём случае.
- Для комментирования войдите или зарегистрируйтесь
Рад, что помог;) Собственно сам чайник, учусь тихонько и выкладываю чему научился;)
- Для комментирования войдите или зарегистрируйтесь
Хорошо, что есть такие «чайники», как Вы ;) А то, бывает, люди отпишутся с вопросом, а о том, помог ли предложенный вариант, и не скажут, да и если найдут где-то ещё решение своей проблемы, всё равно не отпишутся.
- Для комментирования войдите или зарегистрируйтесь
;) Я учусь писать ;) В этом я точно чайник. А опыт программирвания 20 лет;)
- Для комментирования войдите или зарегистрируйтесь
У меня как такового опыта программирования нет, зато есть довольно обширный опыт получения коммьюнити саппорта по различным вопросам, связанным с Линукс -) Опыт как положительный, так и отрицательный -))
- Для комментирования войдите или зарегистрируйтесь
Полезно. Только что настраивал VPS на Агаве. непонятки пока остались, но отдвинул пока их.
- Для комментирования войдите или зарегистрируйтесь
Спасибо! Мне был полезен этот материал.
Успехов вам.
- Для комментирования войдите или зарегистрируйтесь
Рад помочь, С Новым Годом!!!
- Для комментирования войдите или зарегистрируйтесь
как раз то, что мне нужно! спасибо за подробности
- Для комментирования войдите или зарегистрируйтесь
Пожалуйста, пользуйтесь на здоровье.
- Для комментирования войдите или зарегистрируйтесь
А как сделать, чтобы повторяющиеся поля CCK в нескольких нодах выводились в виде ссылки, ведущей на все ноды, в которых присутствует это поле, словно это был бы термин словаря таксономии? content_taxonomy не предлагать интересует конкретный вопрос по реализации на CCK
- Для комментирования войдите или зарегистрируйтесь
Самое правильное будет именно таксономия. Иначе придется дублировать уже имеющийся функционал.
Можно отобрать ноды по значению CCK полю и по его значению можно SQL запросом и делать с ними что хочешь. Только ЗАЧЕМ?
- Для комментирования войдите или зарегистрируйтесь
Ясно. Значит будем юзать таксономию. Просто мне CCK показался гибче.
Только ЗАЧЕМ?
Например вот на этой странице имеются следующие текстовые поля CCK:
Тип дома: Индивидуальная планировка
Тип жилья: Квартиры Пермь
Материал стен: Монолитно-каркасный
Тип сделки: Пермь продажа недвижимости
Район: Свердловский, р-н г. Пермь
Улица: ул. Сибирская
Тип недвижимости: Новостройки Перми
Адрес: Сибирская, 46
Квартиры в продаже: список
Cдача объекта: Дом введен в эксплуатацию.
Было бы не плохо в качестве дополнительной навигации по сайту, что бы эти поля были ссылками. Например при нажатии на ссылку "Индивидуальная планировка" открывался бы список всех превьюшек страниц, где это поле повторяется.
Мне казалось будет проще и правильнее эти текстовые поля CCK сделать ссылками, нежели под каждое поле отдельно заводить словарь таксономии.
- Для комментирования войдите или зарегистрируйтесь
Ясно. Значит будем юзать таксономию. Просто мне CCK показался гибче.
Тип дома: Индивидуальная планировка
Тип жилья: Квартиры Пермь
Материал стен: Монолитно-каркасный
Тип сделки: Пермь продажа недвижимости
Район: Свердловский, р-н г. Пермь
Улица: ул. Сибирская
Тип недвижимости: Новостройки Перми
Адрес: Сибирская, 46
Квартиры в продаже: список
Cдача объекта: Дом введен в эксплуатацию.
Было бы не плохо в качестве дополнительной навигации по сайту, что бы эти поля были ссылками. Например при нажатии на ссылку "Индивидуальная планировка" открывался бы список всех превьюшек страниц, где это поле повторяется.
Мне казалось будет проще и правильнее эти текстовые поля CCK сделать ссылками, нежели под каждое поле отдельно заводить словарь таксономии.
Все поля кроме сдачи объекта и адреса - Таксономия. А ссылки внизу. Просто клиент не хотел их видеть ссылками и я их вынес вниз ноды.
Таксономией правильнее и более того надо жестко задавать словари где это возможно. То нафантазируют так:)
- Для комментирования войдите или зарегистрируйтесь
Полезный материал. Разобрался, работает, спасибо.
- Для комментирования войдите или зарегистрируйтесь
Спасибо! очень пригодился ваш пост.
А не знаете можно ли тут организовать поиск по полям CCK на подобии exposed filters в Views при выводе списка нод?
- Для комментирования войдите или зарегистрируйтесь
Здесь я рассматривал темизацию одной ноды. Даже когда идет вывод списком в node.tpl.php темизируется только одна нода из списка.
По Вашему вопросу почитайте здесь и здесь
- Для комментирования войдите или зарегистрируйтесь







Комментарии