Drupal. Выводим последние несколько записей нод определенного типа сниппетом – 2

Как вывести последние несколько записей нод определенного типа сниппетом. Такая статья уже была, но тут выводим только title со ссылкой на ноду и всё. По идее можно было и не писать про это, но пусть будет).

Приведу сниппет на примере вывода списка альбомов из галелеи.

Создаем блок для вывода. В коде блока пишем:

<?php

$maxlen = 100; //максимальная длина текста
$type='_gallery'; // Нужный тип
$lim='3'; // 

Читать

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.

Функции для получения текущего адреса. Drupal

Собрала функции для получения текущего адреса. Буду дополнять если что.

Получить алиас ноды (синоним ноды):

drupal_get_path_alias($path, $path_language = '').

Функция возвращает синоним, к внутреннему пути друпала.

Параметры:

$path Внутренний путь друпала.

$path_language Не обязательный код языка, для которого выполняется поиск.
Возвращаемое значение

Синоним пути, если был найден или исходный путь, если синоним не был найден.

 

Пример:

//получим путь к ноде (алиас)
$system_path = 'node/'.$node->nid;
$current_path = drupal_get_path_alias($system_path);

&nb
Читать

Модули Path, Pathauto и i18n Drupal

Столкнулась с ситуацией на мультиязычном сайте. Например, у нас есть 2 ноды:

русскоязычная нода /node/1  (имеет алиас /ru/razdel1/about)

англоязычная  нода /node/2  (имеет алиас /en/razdel1/about)

Так вот, при редактировании одной из нод безобразно портятся алиасы другой ноды.

Лечим:

патчим модули path и pathauto:

В файле ваш_сайт\modules\path\path.module меняем:

else if ($path && $alias) {

// Check for existing aliases.

if ($alias == drupal_get_path_alias($path, $language)) {

Читать