Буду благодарен Вашей помощи, сам не могу справиться.
Суть проблемы вот в чем. Есть листалка следующей и предыдущей статьи по термину, этот код вписан в node.tpl.php:
<?php
$prev_node_nid_arr = taxonomy_select_nodes_from_nid($node->field_sub['und'][0]['tid'], $node->nid, 'prev');
if(sizeof($prev_node_nid_arr)){
$prev_node=node_load($prev_node_nid_arr[0]);
print '<a href="/node/'. $prev_node->nid.'" title="'.$prev_node->title.'">'.$prev_node->title.'</a>';
}
?></div>
<?php
$next_node_nid_arr = taxonomy_select_nodes_from_nid($node->field_sub['und'][0]['tid'], $node->nid, 'next');
if(sizeof($next_node_nid_arr)){
$next_node=node_load($next_node_nid_arr[0]);
print '<div class="next"><a href="/node/'. $next_node->nid.'" title="'.$next_node->title.'">'.$next_node->title.'</a></div>';
}
?>
А вот этот код лежит в template.php:
<?php
function taxonomy_select_nodes_from_nid($tid, $nid, $direction = 'next', $limit = 1) {
if (!variable_get('taxonomy_maintain_index_table', TRUE)) {
return array();
}
$query = db_select('taxonomy_index', 't');
$query->addTag('node_access');
$query->condition('tid', $tid);
$query->condition('nid', $nid, $direction == 'next' ? '>' : '<');
if (
$limit !== FALSE) {
$query->range(0, $limit);
}
$query->addField('t', 'nid');
$query->addField('t', 'tid');
$query->orderBy('t.nid', $direction == 'next' ? 'ASC' : 'DESC');
return
$query->execute()->fetchCol();
}
?>
На данный момент все работает, советую всем именно так и ставить, сильно не разбираясь в Друпале 7
Но напрягает один момент, а именно - ссылка на предыдущую и следующую статьи выглядит site.com/node/*. Это не есть хорошо. Как исправить выше представленный код, чтобы вписывался url адрес страницы, на который ведет ссылка вместо стандартного друпаловского?
Понимаю, что надо сделать что-то с этим:
<?php
print '<a href="/node/'. $prev_node->nid.'"
?>
Пробовал вставить url. вместо nid., но так появляется адрес текущей страницы там. В Друпале я электрочайник )
Заранее благодарен!!!!!
Комментарии
Попробуйте вместо
<?php print '<a href="/node/'. $prev_node->nid.'" title="'.$prev_node->title.'">'.$prev_node->title.'</a>';?>
так
<?php print l($prev_node->title, 'node/'.$prev_node->nid, $options = array($alias = TRUE));?>
Да!!! Спасибо! Работает для предыдущей! Только нету атрибута title для ссылки, а он важен
И еще, как Ваш код прикрутить к next, чтобы не потерялся
<?php
print '<div class="next"><a href="/node/'. $next_node->nid.'" title="'.$next_node->title.'">'.$next_node->title.'</a></div>'; ?>
м? Благодарю!
div оставил, все норм с css.
осталось только title к ссылкам прикрутить!
как это сделать?)
Тогда код такой (здесь передается и alt и title ссылки)
<?php print '<div class="next"'.l($next_node->title, 'node/'.$next_node->nid, $options = array('attributes' => array('alt' => $next_node->title, 'title' => $next_node->title), $alias = TRUE)).'</div>';?>
Ну и для предыдущей по той-же системе, только поменять в коде next на prev
Вставил вот так, див убрал:
<?php print l($next_node->title, 'node/'.$next_node->nid, $options = array('attributes' => array('title' => $next_node->title), $alias = TRUE)); ?>
выводит только ссылку титла нету
код стал таким в node.tpl.php:
<?php
<div class="prev">
<?php
$prev_node_nid_arr = taxonomy_select_nodes_from_nid($node->field_country['und'][0]['tid'], $node->nid, 'prev');
if(sizeof($prev_node_nid_arr)){
$prev_node=node_load($prev_node_nid_arr[0]);
print l($prev_node->title, 'node/'.$prev_node->nid, $options = array($alias = TRUE));
}
?></div>
<div class="next">
<?php
$next_node_nid_arr = taxonomy_select_nodes_from_nid($node->field_country['und'][0]['tid'], $node->nid, 'next');
if(sizeof($next_node_nid_arr)){
$next_node=node_load($next_node_nid_arr[0]);
print l($next_node->title, 'node/'.$next_node->nid, $options = array('attributes' => array('title' => $next_node->title), $alias = TRUE));
}
?></div>
</div>
?>
Не помогло
Почему не работает, даже и не понятно. Код рабочий - это стандартная функция l().
Еще я бы не вызывал node_load только для того, чтобы узнать title, гораздо легче (для сайта) будет так
<?php
$next_node_title = db_result(db_query("SELECT title FROM {node} WHERE nid = '%d'", $next_node_nid_arr[0]));
?>
У меня ошибку выдает. Как исправить?
Notice: Undefined index: und в функции include() (строка 101 ...
Notice: Undefined index: und в функции include() (строка 108 ...
А вы не на 6-ой друпал ставите?
7 конечно.
Сделал как тут написано, отлично работает