Как сделать фокус на последний комментарий?

Как сделать фокус на последний комментарий?

Как сделать фокус на последний комментарий, а не на первую страницу темы комментариев? При добавлении комментария страница перескакивает на первую страницу
темы, тоже самое, когда смотришь новые комментарии - всегда первая
страница. Как сделать, чтобы попадать на последнюю страницу или на
актуальный комментарий?

У Drupal есть многолетняя проблема, которую разработчики по каким-то причинам не хотят решать: в случае, если комментарии занимают несколько страниц, неправильно формируются ссылки к новым комментариям в трекере и при переход по такой ссылке открывается первая страница комментариев, хотя пользователь ожидает открытия новых. Здесь описывается применение патча, который разрешает эту проблему.

К сожалению, без правки модулей не обойтись, но вроде и не ядро :)
Затрагиваемые файлы

modules/comments/comment.module
modules/forum/forum.module
modules/tracker/tracker.module
Поехали

1) Открываем файл modules/comments/comment.module, переходим к строке 315,

заменяем код

<?php
'href' => "node/$node->nid",
?>

на следующий:

<?php
'href' => "node/$node->nid",
'query' => comment_new_page_count($all, $new, $node->nid),
?>

1а) Переходим в конец файла, ниже всего существующего кода вставляем описание новой функции:

<?php
/**
* New function to calculate page number for first new comment.
*/

function comment_new_page_count($num_comments, $new_replies, $nid) {
$comments_per_page = _comment_get_display_setting('comments_per_page');
$mode = _comment_get_display_setting('mode');
$order = _comment_get_display_setting('sort');
$pagenum = NULL;
if ($num_comments <= $comments_per_page || ($mode<3 && $order == 1)) {
//Only one page of comments or flat forum and newest first.
//First new comment will always be on first page
$pageno = 0;
}
else {
if ($mode < 3){
//Flat comments and oldest first
$count = $num_comments - $new_replies;
}
else {
//Threaded comments. See the documentation for comment_render().
if ($order == 1) {
//Newest first: find the last thread with new comment
$result = db_query('(SELECT thread FROM {comments} WHERE nid = %d AND status = 0 ORDER BY timestamp DESC LIMIT %d) ORDER BY thread DESC LIMIT 1', $nid, $new_replies);
$thread = db_result($result);
$result_count = db_query("SELECT COUNT(*) FROM {comments} WHERE nid = %d AND status = 0 AND thread > '" . $thread . "'", $nid);
}
else {
//Oldest first: find the first thread with new comment
$result = db_query('(SELECT thread FROM {comments} WHERE nid = %d AND status = 0 ORDER BY timestamp DESC LIMIT %d) ORDER BY SUBSTRING(thread, 1, (LENGTH(thread) - 1)) LIMIT 1', $nid, $new_replies);
$thread = substr(db_result($result), 0, -1);
$result_count = db_query("SELECT COUNT(*) FROM {comments} WHERE nid = %d AND status = 0 AND SUBSTRING(thread, 1, (LENGTH(thread) - 1)) < '" . $thread . "'", $nid);
}
$count = db_result($result_count);
}
$pageno = $count / $comments_per_page;
}
if ($pageno >= 1) {
$pagenum = "page=" . intval($pageno);
}
return $pagenum;
}
?>

2) Открываем файл modules/forum/forum.module, переходим к строке 1001,

заменяем строку

<?php
array('data' => $topic->num_comments . ($topic->new_replies ? '<br />'. l(format_plural($topic->new_replies, '1 new', '@count new'), "node/$topic->nid", NULL, NULL, 'new') : ''), 'class' => 'replies'),
?>

на строку

<?php
array('data' => $topic->num_comments . ($topic->new_replies ? '<br />'. l(format_plural($topic->new_replies, '1 new', '@count new'), "node/$topic->nid", NULL, comment_new_page_count($topic->num_comments, $topic->new_replies, $topic->nid), 'new') : ''), 'class' => 'replies'),
?>

3) Открываем файл modules/tracker/tracker.module, переходим к строке 104,

меняем код

<?php
$comments .= l(format_plural($new, '1 new', '@count new'), "node/$node->nid", NULL, NULL, 'new');
?>

на следующий:

<?php
$comments .= l(format_plural($new, '1 new', '@count new'), "node/$node->nid", NULL, comment_new_page_count($node->comment_count, $new, $node->nid), 'new');
?>

4) Сохраняем изменения во всех файлах, не забыв сделать это в кодировке UTF8, заливаем на хост, сбрасываем кеш, любуемся результатом.


Источник: http://odrupal.ru


GeorgeDiolFОт: GeorgeDiolF 01.09.2017 11:05:00
Uhwefwi ufhweifhw wnfjweof vbdnvweui wiefweh 47665yt34y
DerrickGrileОт: DerrickGrile 01.09.2017 10:53:16
Bfhuwe fwbihfwei wbfeihfiw jbfiwfv iwefibwe 87ty439hgg
DeweybuhОт: Deweybuh 24.06.2017 19:44:53
If you have a desire to learn how to earn from $ 500 per day and work only for yourself, then write to us at email: admin@makemoneyonline.universalxyzdom.xyz

Добавить комментарий:
Имя:
E-mail:
2019 © Обсуждение Joomla и других CMS-систем управления сайтами  Правила | О проекте | Обратная связь