02.10.2011 Ubercart - скрыть SKU и другие поля (модуль Ubercart Product Power Tools) | Drupal 6 26.09.2011 Пользовательские галереи и хранение файлов на сервере - Drupal 6 22.06.2011 Блок последних комментариев блога - DRUPAL 6 16.06.2011 Показывать блок в определенных типах материалов и на определенных страницах - Drupal 6 16.06.2011 Топ 10 блоггеров - Drupal 6 21.05.2011 Модуль переноса комментариев для Drupal 6 22.03.2011 Подсветка синтаксиса кода в Drupal 6 22.03.2011 Кнопки социальных сетей для Drupal
#73

Сниппет вывода последних новостей в блоке - Drupal 6

Как вывести блок последних новостей в Drupal 6.

Приведенный ниже код сниппета выводит 3 последние новости (количество выводимых материалов можно изменить), а выглядит это все так:

Drupal 6 Вывод новостей

Код можно поместить к примеру в блок и применить фильтр PHP, привожу код с комментариями автора, однако, я изменил немного отображение вывода новостей:

  1. $type = 'page';  // Выбираются новости по типу
  2.  
  3. $num_nodes = '3'; // Количество выводимых материалов
  4.  
  5. // Запрос к БД на предмет последних новостей
  6.  
  7. $sql = "SELECT n.nid, n.title, n.created, nr.teaser
  8. FROM {node} n 
  9. LEFT JOIN {node_revisions} nr ON n.vid = nr.vid
  10. WHERE n.status = 1 
  11. AND n.type in (". db_placeholders($type, 'text') .")
  12. ORDER BY n.created DESC";
  13.  
  14. $result = db_query_range($sql, $type, 0, $num_nodes);
  15.  
  16. // Формат даты 
  17. // $dateSQL = format_date($dateUnix, 'custom', 'Y-m-d', 0);
  18. // $datePretty = format_date($dateUnix, 'medium', '', 0);
  19.  
  20. while ($n = db_fetch_object($result)) {
  21. $output1 = '<div class="left-news-date">' . format_date($n->created, 'custom', 'd.m.Y', 0) . '</div>';
  22. $output2 = l($n->title, 'node/' . $n->nid);
  23.  
  24. /* Что бы все было аккуратно, ровно, и текст тизера был действительно похож на текст анонса, удалим из него ненужные пока теги функцией strip_tags(), и «подровняем» текст до еще более точно заданного количества символов в нем функцией truncate_utf8()(в коде примера - до 200 символов). 
  25.  
  26. Тут, конечно, было бы уместнее использовать текст ноды целиком, но мы «запросили» у базы именно тизер, посему используем его(для наглядности описываемых действий достаточно). Если дополнительная обработка текста не нужно, то ниже закомментирован код вывода текста тизера «как он есть», раскомментируйте его и закомментируйте текущий. 
  27. $output .= $n->teaser;
  28. */
  29. $output3 = '<div>' . truncate_utf8(strip_tags($n->teaser), 200, TRUE, TRUE) . '</div>';
  30. print '<div class="left-menu-news">';
  31. print $output1; 
  32. print $output2; 
  33. print $output3; 
  34. print '</div>';
  35. $countx++;
  36. if($countx < 3) echo '<hr class="hr-left">';
  37.  
  38. };
 

Более подробную информацию о формате даты можно найти здесь.

К сожалению не помню у кого на сайте увидел данный пример кода.

29.03.2011 Пейджинг для Image Gallery (вперед, назад) - Drupal 6 22.03.2011 Форма входа вверху сайта - Drupal 6 22.03.2011 Сниппет поиска по товарам - Drupal 6 22.03.2011 Сниппет вывода самых популярных товаров - Drupal 6 22.03.2011 Сниппет вывода последних новостей в блоке - Drupal 6 03.03.2011 Денвер, Drupal7 19.03.2010 Индивидуальный шаблон для каждой страницы - Drupal 6 31.03.2010 Drupal 6 ошибка 0 /upload/js
О сайте