1 заметка с тегом

Эгея

Ссылка на комментарии в Эгее ведёт не туда

28 июля 2015, 21:59

Есть ссылка-заголовок, которая отправляет в самый верх страницы со статьёй. Есть ссылка на комментарии, которая ведёт туда же. Это баг? Фича? Или ерунда какая-то?

Если уж я жму на ссылку «нет комментариев», я хочу написать комментарий и ожидаю, что меня отправят к форме комментариев. Если жму на ссылку «3 комментария», я их хочу почитать, покажите мне их. Зачем мне самое начала статьи? Я же только что всю её прочитал.

Вот рецепт проверенный на этом блоге. Будем менять тему основываясь на системной теме.

Скопируйте файлы system/theme/templates/comments.tmpl.php и /system/theme/templates/notes.tmpl.php в папку шаблонов своей темы /themes/my_favourite_theme/templates

Теперь добавьте див с айдишником «comments» в самое начала блока комментариев. Это позволит мгновенно оказываться в самом начале комментариев, если присоединить к концу урла якорь «#comments». Например, вот так: «http://notes.serdmi.ru/all/ssylka-na-kommentarii-v-egee-vedyot-ne-tuda#comments».

Для этого в скопированном файле comments.tmpl.php в самом начале вставьте строку <div id="comments"></div>

Осталось только поправить ссылки, ведущие на комментарии. Откройте файл notes.tmpl.php найдите блок кода от 118 строки. Нужно к концу значения атрибута «href» ссылок в 122 и 125 строках добавить приписку «#comments».

Было так:

<?php // COMMENTS LINK // ?>

<?php if ($note['comments-link?']): ?>
<div class="e2-note-comments-link">
<?php if ($note['comments-count']) { ?><a href="<?= $note['href'] ?>"><?= $note['comments-count-text'] ?></a><?php if ($note['new-comments-count'] == 1 and $note['comments-count'] == 1) { ?>, <?= _S ('gs--comments-all-one-new') ?><?php } elseif ($note['new-comments-count'] == $note['comments-count']) { ?>, <?= _S ('gs--comments-all-new') ?><?php } elseif ($note['new-comments-count']) { ?> · <span class="admin-links"><a href="<?=$note['href']?>#new"><?= $note['new-comments-count-text'] ?></a></span>
<?php } ?>
<?php } else { ?>
<a href="<?= $note['href'] ?>"><?= _S ('gs--no-comments') ?></a>
<?php } ?>
</div>
<?php endif ?>

Станет так:

<?php // COMMENTS LINK // ?>

<?php if ($note['comments-link?']): ?>
<div class="e2-note-comments-link">
<?php if ($note['comments-count']) { ?><a href="<?= $note['href'] ?>#comments"><?= $note['comments-count-text'] ?></a><?php if ($note['new-comments-count'] == 1 and $note['comments-count'] == 1) { ?>, <?= _S ('gs--comments-all-one-new') ?><?php } elseif ($note['new-comments-count'] == $note['comments-count']) { ?>, <?= _S ('gs--comments-all-new') ?><?php } elseif ($note['new-comments-count']) { ?> · <span class="admin-links"><a href="<?=$note['href']?>#new"><?= $note['new-comments-count-text'] ?></a></span>
<?php } ?>
<?php } else { ?>
<a href="<?= $note['href'] ?>#comments"><?= _S ('gs--no-comments') ?></a>
<?php } ?>
</div>
<?php endif ?>

Грубо говоря, все <?= $note['href'] ?> нужно поменять на <?= $note['href'] ?>#comments

Будут вопросы, пишите в комментарии. Помогу.

Эгея