Модернизация сниппета (для знатоков PHP+MySQL)

Прислано: bockor

пт, 28/12/2007 - 00:04

Код сниппета:

<?php
$vid 
=3;  // номер словаря
$items = array();
$terms taxonomy_get_tree($vid);
foreach ( 
$terms as $term ) {
    
$count "<span>(".db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d" ,  $term->tid)).")</span>";
    
$items[] = l($term->name"taxonomy/term/$term->tid") . $count";
}
if ( 
count($items) ) {  print theme('item_list'$items);}
?>

Выводит список терминов и кол-во документов в них.
Как сделать , чтобы он выводил термины с определенным описанием (поле description в таблице term_data)
Сам я не очень силён в PHP+MySQL.

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано VladSavitsky в пт, 28/12/2007 - 00:44.

То, что вам нужно хранится в $term->description (после определения в $terms = taxonomy_get_tree($vid))
А уж куда его вывести - это вам решать.


Опубликовано bockor в пт, 28/12/2007 - 01:02.

да я уже всё решил) , этот код выводит все термины определенного словаря. А хотелось бы, чтобы он выводил только с определенным описанием. Просто я не знаю как изменить сам код...


Опубликовано edhel в пт, 28/12/2007 - 03:36.

$items[] = l($term->name, "taxonomy/term/$term->tid") . " $count";  

=>

$items[] = l($term->name, "taxonomy/term/$term->tid") . " $count<p>$term->description</p>";


Опубликовано VladSavitsky в пт, 28/12/2007 - 08:54.

Если вы знаете точный текст описания, то:

<?php
$known_description
="Описание тега";

foreach ( 
$terms as $term ) {
   if (
$term->description==$known_description) {
      
//Описание совпало

      //Выводим тут всё что нужно

      //Вычисляем количество:
      
$count "<span>(".db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d" ,  $term->tid)).")</span>";
      
$items[] = l($term->name"taxonomy/term/$term->tid") . $count";
   }
}
?>

Поделитесь решением, которое в итоге было реализовано - нам же тоже интересно.


Опубликовано bockor в пт, 28/12/2007 - 13:34.

это $items[] = l($term->name, "taxonomy/term/$term->tid") . " $count$term->description"; выводит описание вместе со всем остальным, а задача вывести термины с конкретным описанием.

Второй код не работает.


Опубликовано edhel в пт, 28/12/2007 - 14:47.

foreach ( $terms as $term ) {
    $count = "<span>(".db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d" ,  $term->tid)).")</span>";
    $items[] = l($term->name, "taxonomy/term/$term->tid") . " $count";
}

=>

foreach ( $terms as $term ) {
    if ($term->description == 'SOME DESCRIPTION') {
        $count = "<span>(".db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d" ,  $term->tid)).")</span>";
        $items[] = l($term->name, "taxonomy/term/$term->tid") . " $count";
    }
}


Опубликовано bockor в пт, 28/12/2007 - 20:18.

Всё работает! Только почему-то заработало после переиндексации сайта. Удобная штука получилась. Спасибо!


Опубликовано VladSavitsky в ср, 09/01/2008 - 11:42.

Так какое решение вы применили? Поделитесь с другими.


Опубликовано bockor в вс, 13/01/2008 - 07:51.

вот это

foreach ( $terms as $term ) {
$count = "(".db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d" , $term->tid)).")";
$items[] = l($term->name, "taxonomy/term/$term->tid") . " $count";
}

=>

foreach ( $terms as $term ) {
if ($term->description == 'SOME DESCRIPTION') {
$count = "(".db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d" , $term->tid)).")";
$items[] = l($term->name, "taxonomy/term/$term->tid") . " $count";
}
}


Опубликовано klim в чт, 06/11/2008 - 09:37.

Возникла проблема..
есть словарь таксономии
в него я забил несколько терминов + их перевод.
сейчас хочу сделать блок со списком ссылок, основанных на терминах:

<?php

$vid 
4// put correct vocabulary ID here 
$terms taxonomy_get_tree($vid);

$listEN = array();
$listRU = array();
    
    foreach ( 
$terms as $term ) {
        if (
$term->language=="en"){
        
$listEN[] = $term->name;
        } 
        else{
        
$listRU[] = $term->name;
        }
                
$lenRU=count($listRU);
$lenEN=count($listRU);
    
    if (
$lenRU=$lenEN){
        for (
$i=0$i<$lenEN$i++){
            print 
"<li>".$listRU[$i]."=".$listEN[$i]."<br>";
                    }
    } else {
        print 
"Не хватает перевода в словаре таксономии 'Рубрика'!";
    }
    }


?>

в итоге:
если я нахожусь на сайте где-нить в /admin/*, то мой блок работает нормально и я вижу

# О...=about
# Новости=news
# Оборудование=equipment
# Услуги=services
# Наука=science
# Образование=education
# Сотрудничество=buisiness
# Персонал=staff
# Галерея=gallery
# Контакты=contact

а если я захожу на главную страницу сайта, то почему-то пропадают англ. термины.
# О...=
# Новости=
# Оборудование=
# Услуги=
# Наука=
# Образование=
# Сотрудничество=
# Персонал=
# Галерея=
# Контакты=

Почему может такое происходить?


Опубликовано kissfm в пн, 05/10/2009 - 21:49.

А можно как-то вывести только термины 2-го уровня и определенного родителя?


Новое на сайте

Ссылки партнёров