Тема: [релиз s2_last_articles_paging] Постраничная навигация на главной

Артём пишет:

Я пытаюсь реализовать постраничную навигацию на главной. Какие правки мне надо внести чтобы это сделать?

Я сделал небольшое расширение, которое добавляет постраничную навигацию к списку последних материалов, который выводится вместо метки <!-- s2_last_articles -->.

Оно работает на самой последней версии движка:
http://s2cms.ru/downloads/development/

Код ниже нужно поместить в файл _extensions/s2_last_articles_paging/manifest.xml.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE extension SYSTEM "ext-1.0.dtd">
<!--
/**
 * Adds pagination to the last articles
 *
 * @copyright (C) 2011 Roman Parpalak
 * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
 * @package s2_last_articles_paging
 */
-->

<extension for="S2" engine="1.0">
    <id>s2_last_articles_paging</id>
    <title>Last Articles Paging</title>
    <version>1.0a</version>
    <description>Adds pagination to the last articles.</description>
    <author>Roman Parpalak</author>

    <minversion>1.0b</minversion>
    <maxtestedon>1.0b</maxtestedon>

    <hooks>

        <hook id="fn_last_articles_array_pre_get_qr"><![CDATA[
if (S2_MAX_ITEMS && isset($_GET['p']))
{
    $s2_last_articles_paging = ((int) $_GET['p'] > 0) ? ((int) $_GET['p'] - 1) : 0;
    $query['LIMIT'] = S2_MAX_ITEMS.' OFFSET '.(S2_MAX_ITEMS * $s2_last_articles_paging);
}
        ]]></hook>

        <hook id="fn_last_articles_end"><![CDATA[
if (S2_MAX_ITEMS)
{
    global $lang_common;
    $s2_last_articles_paging = isset($_GET['p']) && ((int) $_GET['p'] > 0) ? ((int) $_GET['p'] - 1) : 0;
    $s2_last_articles_paging_links = '';
    if ($s2_last_articles_paging)
    {
        $s2_last_articles_paging_links .= '<a class="arrow here" href="'.S2_PATH.S2_URL_PREFIX.'/'.(S2_URL_PREFIX ? '&amp;' : '?').'p='.$s2_last_articles_paging.'">'.$lang_common['Here'].'</a>';
    }
    if ($output)
    {
        $s2_last_articles_paging_links .= '<a class="arrow there" href="'.S2_PATH.S2_URL_PREFIX.'/'.(S2_URL_PREFIX ? '&amp;' : '?').'p='.($s2_last_articles_paging + 2).'">'.$lang_common['There'].'</a>';
    }

    if ($s2_last_articles_paging_links)
        $output .= '<p class="paging">'.$s2_last_articles_paging_links.'</p>';
}
        ]]></hook>

    </hooks>

</extension>

2

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

Обновил движок, установил расширение — на главной странице внизу освободилось место, но оно совершенно пустое (http://www.interunion.org/). В чём может быть дело?

3

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

Нужно еще добавить в языковой пакет тексты ссылок, как здесь:
http://s2cms.ru/trac/changeset/1044/tru … common.php

4

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

Спасибо, Роман! :-)

5

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

Роман, стрелки «туда—сюда» на сайте и в блоге (в календаре) имеют разное направление. А поскольку я сменил названия на «раньше ↓» и «↑ позже», то это вызывает определённое замешательство.

6

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

Это из-за того, что в блоге на разных страницах используется то прямая сортировка по времени, то обратная. Например, на главной блога естественно ожидать последние посты (обратная сортировка), поэтому «туда →» — это назад по времени. В то же время в списке постов за какой-то месяц нужна прямая сортировка, и здесь «туда →» — это вперед по времени.

Мне неясно, что вы предлагаете сделать. Например, я не могу сделать так, чтобы на главной работала только ссылка «← сюда», потому что переход налево с главной выглядит крайне противоестественно.

Вообще здесь уместно сослаться на совет о постраничнике. Сейчас в движке сделано так, как написал Илья в первом абзаце. Я не хочу делать ссылки как в последней версии Эгеи, потому что, во-первых, странно видеть в начале страницы ссылку вроде «↑ позже», а во-вторых, эти ссылки нужны внизу, когда пользователь дочитал страницу и решает пойти куда-нибудь дальше (когда я дочитал длинную страницу и хочу продвинуться вперед по времени, мне нужно прокрутить страницу вверх и нажать на «↑ позже»).

С этим вопросом важно разобраться, без этого я не выпущу бета-версию, которая уже почти совсем готова.

7

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

В таком случае верну «туда—сюда». Не принципиально. Совет дельный.

8

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

Добрый вечер Роман. Я создал папку с расширением и поместил туда manifest.xml с кодом. Расширение в админке появилось и установилось, но главная страница не изменилась. Место внизу страницы не выделяется, стрелок туда/сюда нет. Пробовал с версией CMS 1.0b3 и 1.0b4, результат одинаковый.

9

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

У меня всё работает. Убедитесь, что в настройке включено ограничение количества материалов на странице:

http://pastexen.com/i/MQZqrw8p.png

10

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

Роман пишет:

У меня всё работает.

Спасибо! Все заработало, действительно в постраничной навигации был нолик.

28.04.2013 11:53:19. Текст был изменен (and).

11

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

Здравствуйте, Роман.

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

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

Хотелось бы статьи размещать в своих папках так http://iscreen.url.ph/i/20140315001918.png и чтобы на основной странице раздела выводились все добавляемые статьи в подразделах с постраничной навигацией.

12

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

Я бы убрал из ссылок фрагмент S2_PATH.S2_URL_PREFIX.'/' в коде этого расширения, примерно так:

$s2_last_articles_paging_links .= '<a class="arrow there" href="'.(S2_URL_PREFIX ? '&amp;' : '?').'p='.($s2_last_articles_paging + 2).'">'.$lang_common['There'].'</a>';

13

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

Спасибо. Попробую.

14

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

Ссылки заработали. Спасибо.

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

Роман, подскажите, что надо изменить в расширении, чтобы постраничная навигация была возможна не только для главной страницы, но и для любой другой, где есть метка <!-- s2_last_articles --> , т.к. уже со следующей страницы подтягивается главная.

16

Re: [релиз s2_last_articles_paging] Постраничная навигация на главной

Я сделал, как советовал Роман. Вот скриншот расширения:
http://iscreen.url.ph/i/20140608180022.png

08.06.2014 15:06:18. Текст был изменен (tataRen).