<?php
$query = "SELECT tid,name from {term_data} ORDER BY name ASC";
$result = db_query($query);
while ($term = db_fetch_object($result)) {
$items[]= l($term->name, "taxonomy/term/$term->tid");
}
if(count($items)) {
return theme('item_list',$items);
}
?>
Сниппет с content-management-systems.info . Подскажите пожалуйста, что нужно дописать чтобы сниппет отображал не все термины сайта, а только из определенного словаря?
Комментарии
А зачем снипет-то? Воспользуйтесь видом (Views - Представление, как в D6 перевели).
а зачем views то?
2 xxandeadxx,
<?php
$query = "SELECT tid,name from {term_data}
WHERE vid = %d
ORDER BY name ASC",
vocab_ID;
$result = db_query($query);
while ($term = db_fetch_object($result)) {
$items[]= l($term->name, "taxonomy/term/$term->tid");
}
if(count($items)) {
return theme('item_list',$items);
}
?>
Вот так?
<?php
$query = "SELECT tid,name from {term_data}
WHERE vid = %d
ORDER BY name ASC";
$result = db_query($query, vocab_ID);
?>
Спасибо!
Меня мама в детстве учила, что сниппеты, запросы к БД в шаблонах и изобретание своих велосипедов - зло, дурной тон и не "Drupal-way"
а на drupal.org то и не догадываются. в саратове видимо какой-то свой "Drupal-way", особенный, с местным менталитетом — поставь модуль на 4 мегабайта, вместо 10 строчек кода, и спаси уссурийского тигра.
О да, радиация от Балаковской АЭС, видимо, сказывается.
Вы много сайтов с таксономией и без Views видели?
Ну или если уж так хочется сниппет, почему бы не воспользоваться API: taxonomy_get_tree(), например?
З.Ы. Выразился я конечно не совсем точно: сниппеты бывают необходимы, но не тогда, когда задачу можно решить стандартными средствами.
видимо да, пора бы подумать о здоровье то, потом поздно будет
достаточно
да можно и taxonomy_get_tree, никто не запрещает
стандартное средство это кокраз сниппет а не сторонний модуль
А подскажите если я хочу, организовать фильтр на основе таксономии
урл вида /type/catalog/term1/terms2/ --- terms2 это термины через запятую 1,2,45
foreach ( $terms as $term ) {
$count = db_result(db_query("SELECT COUNT(t.nid)
FROM {term_node} t
INNER JOIN {node} n
ON t.nid=n.nid
WHERE t.tid = %d
AND t.tid = '1'
AND t.tid = '2'
AND t.tid = '45'
AND n.type = 'price_item'
AND n.status = 1",
$term->tid, price_item ));
/*Этим запросом я хочу подсчитать количество нод
* у которых есть термы 1,2,45 и термин $term->tid,
* если ноль то не показывать.
* Интересует сам запрос правильно создан
* А то у меня что то не работает.
*/
}
Создал отдельную тему