Сохранение прокрутки при навигации

Когда пользователь прокрутит страницу и после этого нажмет на ссылку, он увидит верхнюю область новой страницы. Однако, прокрутка страницы вверх не всегда желательна. Например, если на странице имеется компактный блок с контентом и навигацией по нему, придется после каждого клика прокручивать страницу к этому блоку.

Как сделать так, чтобы прокрутка не происходила? Один вариант решения этой проблемы это Ajax, когда вообще не происходит перехода на другую страницу.

Но мы рассмотрим другой вариант. Суть метода заключается в том, что будет происходить реальный переход на другую страницу с последующей прокруткой к прежней позиции в окне.

Для этого достаточно подключить необходимые js-скрипты (библиотеку jquery, плагин jquery.cookie и скрипт blox.maintain-scroll.js), и на ссылки, которые должны вести себя так, как было описано выше, добавить css-класс blox-maintain-scroll.

.tpl
<?php
    Blox::addToHead(Blox::info('cms','url').'/assets/jquery-1.js');
    Blox::addToHead(Blox::info('cms','url').'/assets/jquery.cookie.js');
    Blox::addToHead(Blox::info('cms','url').'/assets/blox.maintain-scroll.js');
?>
. . .
<a class="blox-maintain-scroll" href="...">...</a>

Описанный в данной статье способ прокрутки следует применять в случае, когда все страницы должны быть проиндексированы в поисковых системах. Этот способ подойдет, например, для каталогов с длинным вертикальным списком ссылок в меню.