0. Перед любыми изменениями "на живую" не забывайте делать резервные копии изменяемых файлов.
1. Скачиваем архив Вы не можете скачивать файлы с нашего сервера
2. Распаковываем и раскладываем файлы из архива: - slider_knob.gif кладём в папку /templates/ВАШ_ШАБЛОН/images/ - paginator3000.css - в папку /templates/ВАШ_ШАБЛОН/css/ - paginator3000.js - в папку /templates/ВАШ_ШАБЛОН/js/ (по умолчанию такой папки нет - надо создать). - [!] Не забываем создать в папке js файл .htaccess с содержанием:
Order Deny,Allow Allow from all
3. Теперь прописываем навигацию в код: 3.1. Открываем main.tpl. Находим:
N.B. Здесь фигурировало url({ THEME })/css/*без пробелов*, но движок в предпросмотре меняет переменную на ее значение, поэтому обратите на это внимание при добавлении кода - вместо http://4dle.ru/templates/Simple/ должно быть { THEME }/ *без пробелов*.
3.2. Открываем navigation.tpl и меняем его полностью на:
<div align="center"> <div class="paginator" id="paginator_example"> <div class="navigation" align="center">[prev-link]Назад[/prev-link] {pages} [next-link]Далее[/next-link]</div> </div> <script type="text/javascript"> window.onload = function(){ paginator_example = new Paginator( "paginator_example", // id контейнера, куда ляжет пагинатор {totalpages}, // общее число страниц 10, // число страниц, видимых одновременно {currentpage}, // номер текущей страницы "{sitelink}" // url страниц ); } </script> </div>
Такая реализация предусматривает то, что если по какой-то причине не грузит JS, то будет видна стандартная навигация по страницам.
3.3. Теперь надо рассказать движку про новые ные переменные. Для этого открываем файлы /engine/modules/show.short.php и /engine/modules/c_navigation.php - изменения в них будут идентичными. То есть, проще говоря, в каждом модуле, где будет требоваться постраничная навигация надо определить шаблонные переменные {totalpages}, {currentpage} и {sitelink}. Итак в обоих вышеупомянутых файлах, находим:
<div class="paginator" id="paginator_example"></div> <script type="text/javascript"> window.onload = function(){ paginator_example = new Paginator( "paginator_example", // id контейнера, куда ляжет пагинатор 50, // общее число страниц 10, // число страниц, видимых одновременно 15, // номер текущей страницы "http://www.yourwebsite.com/pages/" // url страниц ); } </script>
Ну и напоследок пару общих фраз. Как видно из комментариев, чтобы навигация успешно заработала в движке - надо ей передать хотя бы два параметра - общее число страниц и номер текущей страницы. URL и число страниц, видимых одновременно можно прописать и в этом кусочке кода. Передавать эти параметры надо через соответствующие модули в /engine/modules. Я не стал искать другие версии движка, чтобы создать единое решение - для меня главным было объяснить и донести идею.
Своё решение я попытался сделать чуть более универсальным и добавил переменную {sitelink}, которая автоматически вписывает адрес сайта и подстраивается под включённость или выключенность ЧПУ.
P.P.S. И еще одно немаловажное "но". Из-за того, что пагинатор завязан на ширине таблицы, в Internet Explorer при использовании табличной вёрстки вместо номеров страниц может появляться NaN. Это вызвано тем, что IE не знает ширину таблицы до её полной загрузки. Решение - заключить вызов пагинатора в window.onload = function(){ .... }. Побочный эффект такого решения - на долю секунды успевает проскочить стандартная навигация по страницам. Такова жертва универсальности и кроссбраузерности. Избавиться от этого можно лишь частично - поставив проверку на используемый браузер и не передёргивать window.onload() в случае, если это не IE.