Drupal. Выводим последние несколько записей нод определенного типа сниппетом
Как вывести последние несколько записей нод определенного типа сниппетом.
Конечно, можно использвать Views. Но зачем утяжелять? Приведу сниппет на примере вывода новостей.
Создаем блок для вывода. В коде блока пишем:
<?php
function cutString($string, $maxlen) {
$len = (mb_strlen($string) > $maxlen)? mb_strripos(mb_substr($string, 0, $maxlen), ' '): $maxlen;
$cutStr = mb_substr($string, 0, $len);
return (mb_strlen($string) > $maxlen) ? $cutStr . '...' : $cutStr;
}
$maxlen = 100; //максимальная длина текста
$type='_news'; // Нужный тип
$lim='2'; // Количество нод на страницу
$select=db_select('node', 'n')
->fields('n', array('nid', 'created'))
->condition('status', 1)
->condition('type', $type)
->orderby('created', 'desc')
->extend('PagerDefault')
->limit($lim)
->execute();
print('<div><ul>');
foreach ($select as $row) {
$node = node_view(node_load($row->nid),'body');
$body = $node['body'];
//получим путь к ноде (алиас)
$system_path = 'node/'.$row->nid;
$current_path = drupal_get_path_alias($system_path);
//заголовок в виде даты со ссылкой на ноду
print('<h5><li>');
print('<a href="'.$current_path.'">'.date('j.n.Y G:i:s',$body['#object']->created).'</a>');
print('</h5>');
$string = $body['#object']->body['und'][0]['value'];
print(cutString($string, $maxlen));
print('</li>');
}
print('</ul></div>');
?>На забываем ставить вывод "PHP Code".
Справедливо для Drupal 7.
Pingback:Drupal. Выводим последние несколько записей нод определенного типа сниппетом – 2 | Заметки Айтишника