Блок категорий
Вот так выглядит код списка категорий с количеством нод в каждой в D7 (более типовой задачи и не придумать, пожалуй)
<?php
// можно было бы написать вот так - это тоже работает. Поэтому при конвертировании модулей из D6 можно много времени съэкономить, минимально трогая sql запросы.
//$result = db_query("SELECT t.name, t.tid, COUNT(i.tid) as post_number FROM {taxonomy_term_data} t LEFT JOIN {taxonomy_index} i USING (tid) WHERE t.vid=1 GROUP BY t.name ");
// но у Друпала же теперь новое DB API!
$query = db_select('taxonomy_term_data', 't');
$query -> leftJoin('taxonomy_index', 'i', 't.tid = i.tid');
$query -> addField('t', 'name', 'name');
$query -> addField('t', 'tid', 'tid');
$query -> addExpression('COUNT(i.tid)', 'post_number');
$query -> groupBy('t.name');
$result = $query -> execute();
foreach ($result as $row) {
$items[] = l($row -> name, 'taxonomy/term/' . $row -> tid) . ' (' . $row -> post_number . ')';
}
echo theme('item_list', array('items' => $items));
?>результат работы этого кусочка можно увидеть в правой колонке.
К слову, минут 15 я потратил на осознание того, что некоторые методы объекта $query являются chainable (цепными, говорит мне Google Translate - как то не очень мне это слово нравится), а некоторые нет, т.е. можно делать вот так:
<?php
return (bool)db_select('node', 'n')
->fields('n', array('nid'))
->condition('type', 'blog')
->condition('uid', $account->uid);
?>но нельзя написать так:
<?php
return (bool)db_select('node', 'n')
->addField('n', 'nid')
->condition('type', 'blog')
?>потому как метод addField не возвращает сам объект запроса.
Blog categories:
16/12/2009 - 14:40

Comments
В Вашей RSS нельзя получать полные тексты записей, что ли?
кажется, нельзя..
Логотип мне нравится:)
У Вас долго загружается блог - видимо, хостинг плоховат
А если у меня в роли категорий выступает cck select textfield (т.е. таксономии нет) каким образом мне сделать тоже самое?
наверное, надо посмотреть структуру бд :) мой код никаких специфичных функций для таксономии не использует - легко можно переделать
Об этом уже писал кто-то из моих ЖЖ-френдов :(
У нас в жж за такой пост бы закидали какашками в каментах:)
Читая только ваш блог, я действительно расслабляюсь и получаю удовольствие
Хело,блогер!!!
Post new comment