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

Небольшой сниппет Drupal 7 для вывода краткого содержимого нод на главную страницу (вернее в блок, а блок мы можем разместить где угодно). Сделано на примере типа материала "Новости", _news. Можно использовать любой другой тип материала.
Итак, создаем блок тут admin/structure/block/list/Ваша_тема -> Добавить блок и в его коде пишем (не забываем поставить Формат текста PHP Code, ну и соответствующие права для юзера):

 $maxlen)
         ? mb_strripos(mb_substr($string, 0, $maxlen), ' ')
         : $maxlen
     ;
     $cutStr = mb_substr($string, 0, $len);
     return (mb_strlen($string) > $maxlen)
         ? $cutStr . '...'
         : $cutStr 
     ;
 }

$maxlen = 40; //максимальная длина текста (на сколько обрезать тело)
$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('
    '); foreach ($select as $row) { $node = node_view(node_load($row->nid),'body'); $body = $node['body']; print('
  • '); print(date('j.n.Y G:i:s',$body['#object']->created)); print('
  • '); $string = $body['#object']->body['und'][0]['value']; print(cutString($string, $maxlen)); // print($body['#object']->body['und'][0]['value']); print(''); } print('
');

Сохраняемся, не забываем про Формат текста PHP Code.
Вывод мы можем сделать такой как хотим.
Здоровая критика приветствуется ). Может, какие улучшения?
P.S. Можно, конечно, это все сделать на вьюсах.

Рекомендовать в Социальных сетях:
 

Комментариев 11 на “Drupal 7 сниппет. Выводим краткое содержимое нод на главную.

  1. А данный код можно использовать в Custom Tokens ?
    И как в нем вычистить лишнее? у меня в статье кодом вставлено отображение картинки.

    Я бы тогда такой токен смог бы использовать для дискрипшена в метатегах.

    p.s. очень не хватает подписаться на ответы комментариев.

    • Думаю, если засунуть в вывод нужные токены, может вполне себе получиться. Попробуйте. Я сама попробовать не обещаю, сейчас довольно редко захожу в блог. Пока нет времени.
      P.S. Согласна. Постараюсь исправить по возможности. Но вот я много кому чего обещала и всё никак((

  2. подскажите, как можно темизировать, кнопку Подробнее? И второй вопрос как вывести материалы по определенному термину? Спасибо.

    • 1.Попробуйте для начала поискать в теме “read more”. Если найдете, то не проблема. Только переводы добавить потом.
      2.Можно через Views

  3. Дело в том, что материал обрезается. А картинки, скорей всего, ниже. Попробуйте просто увеличить значение переменной $maxlen. Но это будет не очень красиво. По идее, можно дополнительным запросом картинки дергать.

  4. Добрый день, Вадим. Когда сам материал смотрите, выводится? Если нет, то Вам нужно посмотреть закладку “Отображение” в админке, в редактировании данного типа материала. С помощью чего Вы отображаете картинки? Просто стандартными средствами Drupal? Или, может быть, колорбокс используете? Картинки добавляете не в поле Body, а в загружая через поля cck? Посмотрите исходный код страницы с картинками. Есть там что-то похожее на путь к картинкам?

    P.S. Или Вам нужно в кратком содержимом ноды выводить картинки(применительно к данной статье), а в самом материале они отображаются?

  5. Здравствуйте. Прошу прощение за наверно глупый вопрос…
    Добавил блок добавил тип материала, в общем все работает, но немогу добавить поле загрузок картинок, вроде все сделал появился поле загрузки, загружается а на сайте не выводится… Подскажите?

  6. Нет, не пробовал.
    Впрочем, я использовал Ваш пример не для реальной работы, а для изучения сниппетов в Drupal 7.

  7. php 5.3
    Вставляю код в page.tpl.php

    Результат:
    8.1.2012 14:32:58
    23.11.2011 23:27:29

    И ошибки:
    Notice: Undefined index: und в функции include() (строка 67 в файле /mnt/exthdd/dist/drupal/themes.7.x/hike/templates/page.tpl.php).
    Notice: Undefined index: und в функции include() (строка 67 в файле /mnt/exthdd/dist/drupal/themes.7.x/hike/templates/page.tpl.php).

Добавить комментарий для Вадим Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *