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

Ой, я имел ввиду keywords.

Сниппет это просто php и работает по типу как файлы копай в эту сторону.

Вот такой кусочек кода, Мне нужно вставить var a = Значения из результатов работы скрипта-обработчика (массив чисел). Вариант, который закомментирован - это работает в просто php файле. А вариант ниже не работает. Что неправильно пишу?

Николай, вы предлагаете не использовать чанки и сниппеты, а пользоваться процессорами, получается под каждую задачу писать такой код который решает только данную задачу, а что быстрее будет работать, использовать стандартный сниппет в смарти шаблонах например: {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"} или воспользоваться процессорами, и насчёт чанков, не совсем понял как от них отказаться, предполагаю что создавать смарти шаблоны и их инклюдить каким то образом? Если что то напутал подправте, пытаюсь перейти на вами предложенный способ смарти+процессоры, пытаюсь вникнуть в суть, заранее спасибо.

Добавить у слова "Профиль" ник и собственно все будет понятно, т.е. я за то что, да не хватает этой мелочи, даже просто непонятность почему этого нет. ) Про решетку чтобы прочитать пост тоже в ступор вводило раньше, красивей было бы и логичней не решетку иметь а слова "Читать далее", тоже мелочь но тоже нет, сделают будет хорошо. Желательно эти мелочи сделать, это же не трудно? Как говорится мелочи - а приятно!

Я сначала все запихал в сниппет и вызвал его на странице. Но после выполнения кода выводится запись return; 1 Откуда она берется ума не приложу.

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

В целом правильно. Только надо еще дальше плясать. Там есть вызов: {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=...]. Но это так, для справки.

Да, можно так. Только вот так: var a=[[!data_arr]]; (думаю просто опечатка)