Как вывести 10 последних нод определенного вида

Прислано: Valeratal

ср, 31/10/2007 - 08:13

Другие статьи по теме:

Собственно сабж

Знаю что можно вывести с помощью vievs конечно
Но, запросом к базе мне кажется был бы проще (или я не прав?)

Комментарии


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

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано edhel в ср, 31/10/2007 - 15:36.

Примерно так:

<?php
$nodes 
db_query("select nid from node where type='MYTYPE' order by created desc limit 10");
while (
$node db_fetch_object($nodes)) {
   print 
node_view(noad_load($node->nid));
}
?>


Опубликовано Valeratal в ср, 31/10/2007 - 17:30.

хм, не работает чего то


Опубликовано edhel в ср, 31/10/2007 - 18:24.

отлаживать я не буду)


Опубликовано Shedko в чт, 01/11/2007 - 16:37.

Вот этот код выведет 10 статей, не полных а их сокращенных версий.

<?php>
	$nlimit = 10;
	$type = "ВАШ_ТИП_МАТЕРИАЛА";
	$result = db_query_range(db_prefix_tables("SELECT n.created, n.title, n.nid
	FROM {node} AS n, {users} AS u
	WHERE n.type = '$type' AND n.status = 1 AND u.uid=n.uid
	ORDER BY n.created
	DESC "), 0, $nlimit);
	while ($node = db_fetch_object($result)) {
	  $items[] = node_view(node_load(array('nid' => $node->nid)), $teaser = TRUE, $page = TRUE, $links = FALSE)   ;
	}
	if (isset($items) && is_array($items) && count($items) > 0) {
	 foreach ($items as $item){
		$output .=   $item . "<p>";
	 }
	}
	print $output;

если нужны именно полные версии статей, то строчку

$items[] = node_view(node_load(array('nid' => $node->nid)), $teaser = TRUE, $page = TRUE, $links = FALSE)   ;
<code>
заменим на
<code>
$items[] = node_view(node_load(array('nid' => $node->nid)), $teaser = FALSE, $page = TRUE, $links = FALSE)   ;
<code>
 
 
работает и проверялось на 5.0, 5.1, 5.2


Опубликовано run в пт, 28/12/2007 - 12:13.

Полезный сниппет, спасибо.


Опубликовано ilya в вт, 22/01/2008 - 08:44.

Shedko, спасибо, твой код выручил.
Только подскажы, как добавить еще отображения названия (title) нода вот в этом участке:
while ($node = db_fetch_object($result)) {
$items[] = node_view(node_load(array('nid' => $node->nid)), $teaser = TRUE, $page = TRUE, $links = FALSE) ;
}

Как я понимаю, это можно сделать здесь: node_load(array('nid' => $node->nid)), но как?
То есть, получить обычный список нодов с заголовком, телом или teaser, если teaser - тогда title это ссылка на "полный" нод...


Опубликовано Separator@drupal.org в вт, 22/01/2008 - 09:59.

Снипетты - http://setegnom.com/node/294


Опубликовано Shedko в вт, 01/07/2008 - 20:11.

нашел эту тему в подшивке, решил дополнить ее следующим кодом:

<?php
  
global $user;
  
$output '';

  

$result pager_query(db_rewrite_sql("SELECT n.nid, n.created FROM {node} n WHERE n.type = 'ВАШ_ТИП_МАТЕРИАЛА' AND n.status = 1 ORDER BY n.sticky DESC, n.created DESC"), 10 );

  while (

$node db_fetch_object($result)) {
    
$output .= '<p><br /><p>' node_view(node_load($node->nid), 1)  ;
  }
  
$output .= theme('pager'NULL10 );
print 
$output;
?>

что оно делает:
В 5 версии появилась возможность создавать свои типы материалов (это еще даже без СCK) но вот вывести их можно только таксономией и другими способами не связанными именно с "типом", было непонятно а зачем тогда эти типы были созданы =(

К примеру у меня есть тип материала "плюшки", и в него выносятся разнообразные полезности, но вот как вывести хотя бы постранично все это богатство - не устанавливая Views. Приведенный код и выведет 10 статей типа "ВАШ_ТИП_МАТЕРИАЛА" именно разбитым на страницы, и разбивка на страницы будет работать =) проверял и на чистых url - работает.

Код собственно был "выдернут" из api.dripal.ru =) , с похожим кодом выводились "блоги".

Писал для сайта на Drupal 5, но можно глянуть на api.drupal.org как выводятся блоги под 6 и если не будет под ней работать, то взять код оттуда.


Опубликовано sadmin в вт, 28/10/2008 - 08:02.

Shedko, спасибо. Использовал первый приведенный вами скрипт для вывода последних картинок под 6.6. Все замечательно работает


Опубликовано Samovarov в чт, 12/02/2009 - 15:14.

До снипета:
Page execution time was 2074.81 ms. Executed 173 queries in 803.02 milliseconds.

После:
Page execution time was 3862.42 ms. Executed 324 queries in 2159.88 milliseconds.

Кеш, правда, не включен, но запрос все равно должен быть один.


Опубликовано Samovarov в чт, 12/02/2009 - 15:18.

Последний код лучше, но все равно
Page execution time was 3626.09 ms. Executed 296 queries in 1996.35 milliseconds.


Опубликовано vko43 в пн, 24/08/2009 - 17:56.

А как вывести просто заголовки конкретного типа нод?


Опубликовано B.I.S. в ср, 17/11/2010 - 07:16.

http://docs.drupal.ru/node/33476


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

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