Каталог ограничен 15 товарами.

Добрый день. Установил сборку. Начал заполнять карточки товара. Заполнил, но на сайте в каталоге отображаются только первые 15 позиций. Как снять ограничение? сам каталог: http://swisskarma.ru/catalog/iphone-cases/

Comments

Добрый день. Там нет ограничения. Просто пагинация не выводится. Пропишите пагинацию в шаблоне категории. Смотрите как это работает на корневой странице каталога http://swisskarma.ru/catalog/ .

Нет. Если знаний не хватает здесь, лучше ShopModxBox забросить, так как там многое требует знаний в программировании.

Пусть пробует, смотри работу сниппетов и плейсхолдеров, забыл видимо вставить пагинацию. Не понимаешь, смотри по примеру, как сказал Николай.

Сегодня праздник нубов. Тоже разбираюсь с этим. Нид хелп. Очевидно править нужно category.tpl правильно? Но что-то не помогает. Еще задержка в том, что много одноименных файлов в разных категориях (list.tpl, layout.tpl)

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

[[!getPage? &elementClass=`modSnippet` &element=`getResources` &showHidden=`1` &tpl=`office_tpl` &limit=`1000` &includeContent=`1` &includeTVs=`1` &processTVs=`1` &hideContainers=`1` &pageLimit=`5` &pageNavVar=`page.nav` &sortby=`{"menuindex":"ASC"}` ]]

[[!+page.nav]] вот, если он то забыли указать [[!+page.nav]]

Плохо нельзя редактировать комментарии: При условии, что указали

&pageNavVar=`page.nav`

В целом правильно. Только надо еще дальше плясать. Там есть вызов:

{block name=content}

{processor action="web/catalog/category/products/getdata" ns="modxsite" assign=result}

{* Набиваем через единый шаблон листинга *}

{include file="shop/catalog/list/fetch.tpl"}

{/block}

Вот вложенные шаблоны и надо смотреть. И здесь два момента:

  1. Во вложенном шаблоне прописан плейсхолдер [[+page.nav]], но в вызове процессора не прописан передаваемый параметр getPage => true. Без этого параметра не будет вызываться в процессоре сниппет getPage.
  2. Сейчас все шаблоны некешируемые (включена настройка в шаблонах phptemplate.non-cached=true). Если некеширование выключить, то пагинация не будет корректно работать. В шаблоне tpl/category.tpl надо бы переделать на вызов некешируемого сниппета [!smarty?tpl=...]. Но это так, для справки.

Поправка: у нас не используются чанки, у нас не используется getResources, у нас не используются pdoTools и т.д. и т.п. У нас Smarty и процессоры. Поэтому человек написал выше правильно. Речь здесь о сборке магазина ShopModxBox.

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

{snippet name="getProducts" params="includeTVs=`1` &includeTVList=`price0,image0,tags,availability` &limit=`4` &tpl=`product` &resources=`{tv name="mainNew" contentid="1" parse="true"}`" parse="true"}

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

Валентин, не обязательно писать код под каждую задачу. Во-первых, есть готовые процессоры (типа того же site/web/getdata), которые можно использовать. К тому же процессоры лучше сниппетов тем, что их можно расширять. Вот сниппеты как правило используются под конкретные задачи, так как их можно использовать только в том виде, в каком они поставляются. Вы не можете их модифицировать, иначе как сделать копию и там уже вносить правки. А вот процессоры запросто расширить и можно, к примеру, переопределить нужный метод. Во-вторых, у нас используется Smarty-шаблонизация, что позволяет во многих случаях вообще отказаться от вызова сниппетов, чанков и тех же процессоров, если задача простая. Простой пример: не раз видел вызов сниппета типа [[year]], который возвращает значение текущего года (return date('Y');). От чего это происходит? От того, что ни в MODX-шаблонах, ни в чанках нет возможности выполнить php-код (то есть какую-то логику). В Смарти-шаблоне я просто напишу {date('Y')} и все. Не надо никаких сниппетов или чанков.

То есть призыв отказываться от чанков и сниппетов, это не какая-то тотальная борьба с ними, а просто такая парадигма разработки в рамках наших технологий. То есть если вы используете чистый MODX, то иначе как на чанках и сниппетах вы и не сможете работать. А если у вас phpTemplates+modxSmarty, то вы можете так же работать на чанках и сниппетах, но это уже не так эффективно. Зачем тогда вообще использовать phpTemplates+modxSmarty?

И справедливости ради следует отметить, что совсем от чанков и сниппетов не получится отказаться. Во-первых, как минимум чанки нужны для модулей Login и Wayfinder, от которых мы пока не отказались. Во-вторых, элементарно для вызова некешируемого Смарти-шаблона по прежнему используется некешируемый вызов сниппета [[!smarty?tpl=...]]. Но относительно традиционных методов разработки на MODX-е, когда чанков и сниппетов порой больше двух-трех сотен штук, можно сказать что мы не используем чанки и сниппеты.

Большое спасибо за ответ, и заметил что у вас нет поиска, приходится идти в гугл и искать ответ вот так "modxclub smarty и его приимущество", или у вас он где то есть, но спрятан?

Если бы у нас был поиск, вряд ли бы вы что-то через него нашли у нас по этому запросу :) Нет, здесь поиск не сделан, все руки не доходят. А если вы хотите в гугле искать именно по нашему запросу, добавляйте к запросу site:modxclub.ru и все.

спасибо всем за комментарии, неожиданно решил проблему, отредактировав category.tpl

{extends file="layout.tpl"}

{block name=content}

    {processor action="web/catalog/category/products/getdata" ns="modxsite" params="limit=`6`&getPage=`1`" assign=result}

    {* Набиваем через единый шаблон листинга *}

    {include file="shop/catalog/list/fetch.tpl"}

{/block}

Ничего неожиданного. Выше я писал:

  1. Во вложенном шаблоне прописан плейсхолдер [[+page.nav]], но в вызове процессора не прописан передаваемый параметр getPage => true. Без этого параметра не будет вызываться в процессоре сниппет getPage.

Вы прописали этот параметр в params в вызове процессора, и постраничность заработала. Но как я и писал там же, постраничность перестанет нормально работать, если отключить некеширование шаблонов. А не отключить — будет сайт медленней работать. Поэтому возьмите создайте новый Смарти-шаблончик, например inc/category/list.tpl, перекиньте в него ваш код:

{processor action="web/catalog/category/products/getdata" ns="modxsite" params="limit=`6`&getPage=`1`" assign=result}

    {* Набиваем через единый шаблон листинга *}

    {include file="shop/catalog/list/fetch.tpl"}

А вместо него пропишите некешируемый вызов [[!smarty?tpl=inc/category/list.tpl]]. Тогда можно будет отключить некеширование шаблонов (в параметрах MODX-шаблонов).

Беда, http://s1533.h3.modhost.pro/catalog/fasad/cajding/ сделал как у вас, в принципе отсюда, лимит устанавливается, значит работает, но вот пагинация не появляется, а если в выводе списка товаров shop/catalog/list/fetch.tpl прописать

[[+page.nav]]

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

  1. Надо передавать в параметры вызываемого процессора «page» => smarty.get.page,тоестьsmarty.get.page, то есть _GET-параметр запроса.
  2. Если у вас свежая сборка, то вообще правильней не [[+page.nav]] вставлять, а инклюдить шаблон постраничности.

Спасибо, теперь все выводиться. Но по страницам не переходит. При клике по пагинации не переходит. В чем еще может быть проблема. шаблоны я не правил. В шаблоне Основной все работает, а если перейти в шаблон Категория то все пагинация не работает.

В контейнере товаров вызывают вот такой шаблон:

{extends file="layout.tpl"}


{block name=content}
    {processor action="web/catalog/category/products/getdata" ns="modxsite" params="&limit=`4`&getPage=`1`" assign=result}

    {* Набиваем через единый шаблон листинга *}
    {include file="shop/catalog/list/fetch.tpl"}

    {include "common/pagination/pagination.tpl"}

{/block}
  1. Надо передавать в параметры вызываемого процессора «page» => smarty.get.page,тоестьsmarty.get.page, то есть _GET-параметр запроса.

У вас здесь где передача этого параметра? Во-вторых, это кешируемый блок, так как находится внутри самого шаблона документа. Сделайте так:

  1. В шаблоне категории пропишите вызов своего субшаблона, типа так:
{block name=content}
   [[!smarty?tpl=`inc/shop/category/index.tpl`]]
{/block}

А в inc/shop/category/index.tpl пропишите

{$params = [
    "limit" => 4,
    "page"    => $smarty.get.page
]}
{processor action="web/catalog/category/products/getdata" ns="modxsite" params=$params assign=result}
    {* Набиваем через единый шаблон листинга *}
    {include file="shop/catalog/list/fetch.tpl"}
    {include "common/pagination/pagination.tpl"}

getPage не нужен для работы шаблона постраничности. Главное — чтобы был сам этот шаблон постраничности.

Ура спасибо, низкий вам поклон, Николай))) доперло до меня, заработало) [А то я в этом смарти вообще ничего не смыслю, а есть какие нибудь качественные уроки по этому смарти???] с продажи сайта, отблагодарю.)))))