Вывод тизеров

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

Аватар пользователя masterkust masterkust 20 декабря 2009 в 8:42

Как вывести тизеры, пренадлежащие нодам определенного термина таксономии.
Поиск помог найти сниппеты как вывести список.
А мне нужно как-то вывести тизеры.
Устанавливать только ради одного этого views не хочется.

Комментарии

Аватар пользователя sidor sidor 20 декабря 2009 в 15:29
$result = db_query(db_rewrite_sql("SELECT * FROM {node} n WHERE type = '%s' AND status = 1 ORDER BY n.created ASC"), "blog"); //blog - ваш тип
while($data = db_fetch_object($result)) {
    $node = node_load($data->nid);
    print $node->teaser;
}

вот примерно так. Только учтите, что функция node_load() очень ресурсоемкая, т.к. подгружает всю ноду.

Аватар пользователя sidor sidor 21 декабря 2009 в 11:43

RxB wrote:
sidor, ну и где тут термин таксономии?

Забыл про него Smile

$result = db_query(db_rewrite_sql("SELECT * FROM {node} n WHERE type = '%s' AND status = 1 ORDER BY n.created ASC"), "blog"); //blog - ваш тип
while($data = db_fetch_object($result)) {
    $node = node_load($data->nid);
    if($node->taxonomy[10]) {// 10 - id термина
        print $node->teaser;
    }
}
Аватар пользователя masterkust masterkust 28 декабря 2009 в 9:14
<?php
$taxo_id 
2;  // номер термина
$list_no =10;  // количество документов в списке
$list_cu 1// счетчик

$sql "SELECT node.title, node.nid FROM node INNER JOIN term_node ON node.nid = term_node.nid WHERE term_node.tid = $taxo_id ORDER BY node.created DESC LIMIT $list_no";

$result db_query($sql);

while (

$anode db_fetch_object($result)) {
  
$output .= node_view(node_load(array('nid' => $anode->nid)), 1);
  
$output .= "<ul>";
  
$list_cu 0;
}

$output .= "</ul>";

print 

$output;

?>

Сделал с помощью node_load, но систему подгружает.
Вообще мне нужно только картинку вывести и название, и для этого подгружать всю ноду все-таки не эффективно.

Кто-нибудь знает как это сделать более правильно?

Аватар пользователя masterkust masterkust 6 января 2010 в 11:16

MDinc wrote:
Написать запрос к бд и обработать его

А почему не так
node_view(node_load($anode->nid), TRUE);

Это меньше нагрузит сервер?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 20 января 2010 в 21:21

Как-то так:

<?php$result = db_query(db_rewrite_sql("SELECT nv.teaser FROM {node} n INNER JOIN {node_revisions} nr ON n.vid = nv.vid INNER JOIN {term_node} tn ON n.vid = tn.vid WHERE type = '%s' AND status = 1 AND tn.tid = %d ORDER BY n.created ASC"), 'blog', 777); //blog - ваш тип, 777 ваш термин
while($data = db_fetch_object($result)) {
        print $data->teaser;
    }
}?>

Если нужно вывести картинку, то аналогичным образом JOIN'им таблицу с картинками и выводим