Отображение подкатегорий и соседних категорий с картинками в каталоге
Опубликовано Dark в СБ, 20.11.2010 - 17:02
Задача была такая: Когда находишься на странице каталога (термин таксономии), показать потомков термина с их картинками.
Для картинок был использован модуль taxonomy_image и imagecache для создания пресетов.
Отображать подкатегории я решил в подвале вьюса (views footer)
1. Включить views taxonomy_term (готовый вьюс, идет по-умолчанию, достаточно только включить)
2. В настройках вьюса в блоке "Footer" ввести код:
<?php $term = taxonomy_get_term(arg(2)); //получаем id термина из пути $parents = taxonomy_get_parents($term->tid); //получаем список родителей термина if ($parents) { //если родители есть, печатаем имеющихся соседей (исключая текущий термин) foreach ($parents as $p) { $childs = taxonomy_get_children($p->tid); //получаем список потомков $options = array('html' => TRUE); $mypath = variable_get('taxonomy_image_path', 'category_pictures') .'/'; if ($childs) { //если потомки найдены foreach ($childs as $ch1) { if ($ch1->tid != $term->tid) { //если потомк не равен текущему $im = taxonomy_image_get_object($ch1->tid); //получаем картинку термина if ($im) { $image = theme_imagecache('catalog_thumb', $mypath.$im->path, $ch1->name); //его imagecache $image_link = l($image, "taxonomy/term/".$ch1->tid, $options); //картинка-ссылка print "<div class='tax_image'>$image_link</div>"; //если есть картинка, печатаем } $link = l($ch1->name, "taxonomy/term/".$ch1->tid); //ссылка на термин print "<div>$link</div>"; } } } } } $childs = taxonomy_get_children($term->tid); if ($childs) { //если потомки найдены $options = array('html' => TRUE); $mypath = variable_get('taxonomy_image_path', 'category_pictures') .'/'; foreach ($childs as $ch) { $im = taxonomy_image_get_object($ch->tid); //получаем картинку термина if ($im) { //если есть картинка, печатаем $image = theme_imagecache('catalog_thumb', $mypath.$im->path, $ch->name); //его imagecache $image_link = l($image, "taxonomy/term/".$ch->tid, $options); //картинка-ссылка print "<div class='tax_image'>$image_link</div>"; } $link = l($ch->name, "taxonomy/term/".$ch->tid); //ссылка на термин print "<div>$link</div>"; } } ?>
Готово =)
PS: Темизировать по своему вкусу

Комментариев нет
Отправить комментарий