Отображение подкатегорий и соседних категорий с картинками в каталоге

Задача была такая: Когда находишься на странице каталога (термин таксономии), показать потомков термина с их картинками.

Для картинок был использован модуль 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: Темизировать по своему вкусу

Комментариев нет

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

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Enter the characters shown in the image.