Вы здесь

Drupal 7: Добавить ссылки предыдущий / следующий к ноде

Для перехода на следующую ноду добавляются ссылки предыдущая, следующая. Например, это актуально в новостях, да и для SEO полезно.

/**
* Previous / Next function for nodes, ordered by node creation date
*
* @param $current_node: node object or node id
* @param $node_types:  array of node types to query
*
* @return array
* 
*/
function MODULENAME_prev_next_node($current_node = NULL, $node_types = array()) {
    // если передан параметр nid, то грузим ноду
    if (!is_object($current_node)) { $current_node = node_load($current_node->nid); }
 
    // делаем массив, если передана строка
    if (!is_array($node_types)) { $node_types = array($node_types); }
 
    // previous
    $prev = db_select('node', 'n')
    ->fields('n',array('nid', 'title', 'created'))
    ->condition('n.status', 1, '=')
    ->condition('n.type', $node_types, 'IN')
    ->condition('n.created', $current_node->created, '<')
    ->orderBy('created', 'DESC')
    ->range(0,1)
    ->execute()
    ->fetchAssoc();
 
    // next or false if none
    $next = db_select('node', 'n')
    ->fields('n',array('nid', 'title', 'created'))
    ->condition('n.status', 1, '=')
    ->condition('n.type', $node_types, 'IN')
    ->condition('n.created', $current_node->created, '>')
    ->orderBy('created', 'ASC')
    ->range(0,1)
    ->execute()
    ->fetchAssoc();
 
    return array('prev' => $prev, 'next' => $next);
}

 

Немного затемизируем и получается так:

Картинка новости
Тэги: 
Поделиться:

Оставить комментарий