Symphony CMS: Делаем постраничную навигацию (DS Pagination)

Содержание

Как настроить pagination у статей в Symphony CMS? Сделать работающую постраничную навигацию.

Сначала немного ознакамливаемся с URL-параметрами — URL Parameters. Понимаем что Symphony CMS так спроектирована, что URL-handles (ЧПУ ваших страниц) порешают url-параметры. То есть param1, назначенный, например, вами как параметр страниц, не будет работать, если по тому же пути у вас отворяется внутренняя страница (подробная страница новости, скажем).

Дальше смотрим хороший ответ Nuckdunn:

I find using two separate pages is cleanest.

  • /articles/:page
  • /articles/view/:handle

Otherwise you shoe-horn two types of parameter (a page number an entry handle) into a single parameter, which is confusing for:

  • users — “Is that an article with a title of “2” or is it page 2?
  • yourself — you have to check if the parameter is a number in your XSLT and display accordingly
  • Symphony — attaching lots of data sources to a page can lead to redundancy and they can execute when you don’t need them, which can be a performance penalty

То есть, понимаем, что будем заводить 2 страницы: одну под статьи, другую под страницы для статей.

Мы, правда, сделали наоборот, страница статьи (workspace/pages/articles.xsl) содержит в себе дочернюю — страницу под страницы статей (workspace/pages/articles_page.xsl).

Первая не имеет URL параметра page-number:

Symphony CMS постраничная навигация
Symphony CMS постраничная навигация

его в качестве первого параметра имеет дочерняя страница — articles_page.xsl:

Symphony CMS постраничная навигация для статей
Symphony CMS постраничная навигация для статей

Дальше в Components -> Data Sources -> Articles отмечаем галочкой, чтобы разбивать список статей на страницы, по сколько записей (на рисунке указано "1") и обязательно Return page — {$page-number} — тот URL-параметр, который указали в настройках страницы ранее. Таким образом url будет теперь динамически меняться для следующих в навигации страничек статей.

Настраиваем pagination для Symphony CMS
Настраиваем pagination для Symphony CMS

Код для пагинации вставлять в обе страницы:

<xsl:call-template name="pagination">
    <xsl:with-param name="pagination" select="/data/articles/pagination" />
    <xsl:with-param name="display-number" select="'7'" />
    <xsl:with-param name="pagination-url" select="concat($root, '/articles/page/$')" />
    <xsl:with-param name="label-next" select="'вперёд »'" />
    <xsl:with-param name="label-previous" select="'« назад'" />
</xsl:call-template>

Утилита XSLT для постраничной навигации (DS Pagination) сохраняется в папку utilities.



10 марта 2012 г.
loco.ru
http://loco.ru/sections/symphony