Свой тизер и "читать далее"

Главные вкладки

Аватар пользователя fairwind fairwind 13 апреля 2009 в 18:52

Столкнулся с неприятной особенностью стандартного хука node_link. Оный хук не покажет ссылку "читать далее", если в его аргументе $teaser содержится что-то отличное от TRUE. Неприятность в том, что если, скажем, делать несколько списков тизеров разного вида, выводимых через views, и делать их через node_view с кастомным параметром $teaser, то наши любимые ссылки "читать далее" не создадутся.

Пришлось хакать ядро, поменяв одну строку в node.module. Исходный текст хука:

<?php/**
 * Implementation of hook_link().
 */
function node_link($type, $node = NULL, $teaser = FALSE) {
  $links = array();

  if ($type == 'node') {
    if ($teaser==1 && $node->teaser && !empty($node->readmore)) {
      $links['node_read_more'] = array(
        'title' => t('Read more'),
        'href' => "node/$node->nid",
        // The title attribute gets escaped when the links are processed, so
        // there is no need to escape here.
        'attributes' => array('title' => t('Read the rest of !title.', array('!title' => $node->title)))
      );
    }
  }

  return $links;
}?>

Нам нужна строчка
if ($teaser==1 && $node->teaser && !empty($node->readmore)) {

Заменяем ее на
if ($teaser && $node->teaser && !empty($node->readmore)) {

(убрали жесткую проверку на TRUE, при любом значении $teaser !=0 условие срабатывает).

Все, любимые ссылки на месте Lol

Главное, при очередном обновлении ядра не забыть пропатчить снова... А то что-то я не очень верю, что оный патч попадет в ядро в ближайшем будущем, хотя issue я сделал...