Вывод тэгов одного из нескольких словарей

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

Аватар пользователя vendetta vendetta 9 апреля 2009 в 9:54

Как можно организовать вывод тэгов только одного из нескольких словарей? print $terms выводит все тэги скопом, а хочется получить возможность управляемо выводить (например в тизере) тэги только одного из словарей. Или вывести их в разных местах на уровне тпл. Это реально?

Комментарии

Аватар пользователя HIgor1968 HIgor1968 9 апреля 2009 в 12:09

Я функцию под себя писал в template.php. Потом ее использовал в шаблонах.

function ret_tax_link($slovar_name = "", $tag_title1 = "", $tag_title2 = "", $dop = "", $fld="name", $tip = False) {
//Указываем ID словаря из которого будем выводить теги
//Запрос для вывода тегов
if($slovar_name):
$query = "SELECT v.vid, v.* FROM {vocabulary} v WHERE LOWER(v.name) = LOWER('$slovar_name')";
//получаем результат запроса
  $sql = db_rewrite_sql($query, 'v', 'vid');
  $result = db_query($sql);
  $slovar_vid = db_fetch_object($result)->vid;
        else: return "";
  endif;

//Только таксономия не имеющая детей
$query = "SELECT t.*
                 FROM {term_data} t
                 LEFT JOIN {term_hierarchy} h ON t.tid = h.parent
                 WHERE t.vid = $slovar_vid and isnull(h.parent)
                 ORDER BY weight, name"
;
  //получаем результат запроса
  $sql = db_rewrite_sql($query);
  $result = db_query($sql);

//получаем инфу о словаре

$vocabulary = taxonomy_vocabulary_load($slovar_vid);

//формируем теги для вывода
$out = '<div class="subs_title">'. $tag_title1 . $vocabulary->description . ':' . $tag_title2 . '</div><div class="subs_voc">';
while ($no = db_fetch_object($result)) {
if($no->description):
$opt['attributes']['title'] = $no->description;
else:
$opt['attributes']['title'] = $no->name;
endif;
if($fld='description'){
if($no->description){
$out .= $tip ? $dop . $no->description . t(' !term', array('!term' => l('>>', taxonomy_term_path($no), $opt))) . '</br>' : t(' !term', array('!term' => l($dop . $no->description, taxonomy_term_path($no), $opt)));}
else {
$out .= $tip ? $dop . $no->name . t(' !term', array('!term' => l('>>', taxonomy_term_path($no), $opt))) . '</br>' : t(' !term', array('!term' => l($dop . $no->name, taxonomy_term_path($no), $opt)));
}
}
else {
$out .= $tip ? $dop . $no->name . t(' !term', array('!term' => l('>>', taxonomy_term_path($no), $opt))) . '</br>' :  t(' !term', array('!term' => l($dop . $no->name, taxonomy_term_path($no), $opt)));
}
}

$out .= '</div>';
return $out;
}

$slovar_name - Название словаря (единственный обязательный параметр)
$tag_title1 - Дописка при выводе перед термином
$tag_title2 - Дописка при выводе после термина
$dop - Тоже дописка, разделитель между терминами
$fld - "name" или "description" что будем печатать
$tip - False или True, меняет формат вывода.