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

Прислано: masterkust

вс, 20/12/2009 - 05:42

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

Комментарии


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

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано sidor в вс, 20/12/2009 - 12: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() очень ресурсоемкая, т.к. подгружает всю ноду.


Опубликовано RxB в вс, 20/12/2009 - 12:48.

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


Опубликовано alhoff в вс, 20/12/2009 - 14:18.

Сам долго мучился потом все таки поставил views.


Опубликовано sidor в пн, 21/12/2009 - 08:43.

RxB написал(а):

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

Забыл про него :)

$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;
    }
}


Опубликовано RxB в пн, 21/12/2009 - 11:05.

Писец, вы все сниппеты так бахаете? Сейчас до дома доеду нормальный запрос напишу


Опубликовано alhoff в вт, 22/12/2009 - 21:08.

сирота, до сих пор домой не вернулся : )


Опубликовано RxB в вт, 22/12/2009 - 21:14.

Сорри, сирота стольким помогает, что забывает нафиг. Сейчас сделает


Опубликовано masterkust в пн, 28/12/2009 - 06: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 в ср, 06/01/2010 - 08:16.

MDinc написал(а):

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

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

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


Опубликовано Valeratal в вт, 19/01/2010 - 07:04.

тоже интересно. А то все вьюс ругает, а чем заменить - хрен знает
запросы также грузят


Опубликовано Valeratal в ср, 20/01/2010 - 18:23.

Кстати, а вывод всьюсовский тизеров, также node load использует?


Опубликовано RxB в ср, 20/01/2010 - 18: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'им таблицу с картинками и выводим


Опубликовано Valeratal в ср, 20/01/2010 - 18:28.

а как сделать вывод тизеров с пагинатором
а еще бы добавить условие по типу ноды (page или story например)


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

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