Модернизация сниппета (для знатоков 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.
- bockor's blog
- Для комментирования войдите или зарегистрируйтесь
То, что вам нужно хранится в $term->description (после определения в $terms = taxonomy_get_tree($vid))
А уж куда его вывести - это вам решать.
- Для комментирования войдите или зарегистрируйтесь
да я уже всё решил) , этот код выводит все термины определенного словаря. А хотелось бы, чтобы он выводил только с определенным описанием. Просто я не знаю как изменить сам код...
- Для комментирования войдите или зарегистрируйтесь
$items[] = l($term->name, "taxonomy/term/$term->tid") . " $count";
=>
$items[] = l($term->name, "taxonomy/term/$term->tid") . " $count<p>$term->description</p>";
- Для комментирования войдите или зарегистрируйтесь
Если вы знаете точный текст описания, то:
<?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";
}
}
?>Поделитесь решением, которое в итоге было реализовано - нам же тоже интересно.
- Для комментирования войдите или зарегистрируйтесь
это $items[] = l($term->name, "taxonomy/term/$term->tid") . " $count$term->description"; выводит описание вместе со всем остальным, а задача вывести термины с конкретным описанием.
Второй код не работает.
- Для комментирования войдите или зарегистрируйтесь
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"; } }
- Для комментирования войдите или зарегистрируйтесь
Всё работает! Только почему-то заработало после переиндексации сайта. Удобная штука получилась. Спасибо!
- Для комментирования войдите или зарегистрируйтесь
Так какое решение вы применили? Поделитесь с другими.
- Для комментирования войдите или зарегистрируйтесь
вот это
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";
}
}
- Для комментирования войдите или зарегистрируйтесь
Возникла проблема..
есть словарь таксономии
в него я забил несколько терминов + их перевод.
сейчас хочу сделать блок со списком ссылок, основанных на терминах:
<?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
а если я захожу на главную страницу сайта, то почему-то пропадают англ. термины.
# О...=
# Новости=
# Оборудование=
# Услуги=
# Наука=
# Образование=
# Сотрудничество=
# Персонал=
# Галерея=
# Контакты=
Почему может такое происходить?
- Для комментирования войдите или зарегистрируйтесь
А можно как-то вывести только термины 2-го уровня и определенного родителя?
- Для комментирования войдите или зарегистрируйтесь




Комментарии