Вариантов несколько:

  1. в параматры шаблона добавить параметр «allow_php_tag» (да/нет). Но этот способ не рекомендуется c точки зрения безопасности. 2. (сам таким пользуюсь) Можно написать плагин для smarty. примеры можно посмотреть в папке core/components/modxsmarty/smarty_plugins/ 3. необходимый код php разместить в контроллере (вместо base.php). там можно назначить smarty переменные, и их использовать при выводе.

раньше было {php}, но теперь оно деприкейтид. В контроллере или в плагине пропиши $modx->smarty->allow_php_tag = true; и будет тебе счастье. {php} $a = array(164,185,280,282); // массив еще надо explode из списка в тв foreach($a as $v){ if($doc = $modx->getObject('modResource',$v) AND $doc->get('template') == 3) $docs[]=$v; else $folder[]=$v; } $where = array( 'id:IN'=> $docs, 'OR:parent:IN'=>$folder, 'template'=>3 ); {/php} На Смарти: {$a = array(164,185,280,282)} {* массив еще надо explode из списка в тв Делается так: {$a = explode(',', $tv_value)} *} {foreach($a as $v)} {if $modx->getObject('modResource',$v)->template == 3} $docs[]=$v; {else} $folder[]=$v; {/if} {/foreach} {$where = array( 'id:IN'=> $docs, 'OR:parent:IN'=>$folder, 'template'=>3 )} Чем не устраивает?

Собственно, сам вопрос: а почему нельзя конечный html передавать? Очевидный минус передачи html — больший объем ответа. Если сидишь через wifi, то м.б. и будет нормально, а если взять мобильный инет, то будет тяжко. Также если передаваемый шаблон подразумевает какую-либо динамику, то это доп. объем кода и соответственно нагрузка. Ваш аргумент про «дополнялки», на мой взгляд, не выдерживает критики. Ведь если что-то надо добавить, так же придется лезть в шаблон и что-то править. А откуда данные попадают в шаблон? Из процессора. Его так же придется править. Так что шило на мыло. В данном случае гораздо правильнее смотреть на передачу чистых данных и использование шаблонизации на стороне клиента. Подавляющее большинство современных решений юзают либо сторонний js-шаблонизатор, либо свою реализацию вывода представления. Я бы смотрел в этом направлении.

На сколько я знаю, шопкипер для Эво давно уже не развивается, так что переносить на Рево имеет смысл. Скрипта для миграции не встречал, но могут помочь эти статьи: раз (если просто перекинуть с Эво на Рево, но вам придется все равно все перепрограммировать, включая модуль Шопкипера, так как на Рево все по-другому написано), и два (это если наш модуль ShopModx ставить на готовый магазин).

Собственно, сам вопрос: а почему нельзя конечный html передавать? За год с лишним, вы первый, кто об этом спросил. Надо понимать, что платформа дает основу, а делаете вы уже дальше что хотите. Посмотрите шаблон просмотра корзины, расширяющий базовый шаблон корзины. Там вызывается процессор получения данных корзины. Вот вам все необходимое для формирования собственного HTML-а. Хотите через Ajax это сделать, вот вам полезная статья на этот счет. Изучайте, все в ваших руках.

Мелким и недостойным специальной темы вопросам по smarty быть здесь! Иногда хочется написать короткий код на php в шаблоне, чтобы раскидать например составить условие where для процессора. И как-то не хочется особо париться с расширением процессора-сниппета и т.д. В смарти раньше было {php}, но теперь оно деприкейтид. Делать это через assign, foreach и if если и возможно, то совершенно неудобно. Если возможно. Хочется массив с id разбросать по шаблонам: если шаблон Товар — в 'id:IN', если Категория — в 'OR:parent:IN' Раньше можно было значит что-то типа {php} $a = array(164,185,280,282); // массив еще надо explode из списка в тв foreach($a as $v){ if($doc = $modx->getObject('modResource',$v) AND $doc->get('template') == 3) $docs[]=$v; else $folder[]=$v; }

$where = array( 'id:IN'=> $docs, 'OR:parent:IN'=>$folder, 'template'=>3 ); {/php} или же типа того и потом отправить это условие в стандартный процессор… Ну как-то так. То, что я не умею работать со смарти — неоспоримо. Может кто умный подскажет?

Необходима доработка магазина на Shopkeeper 1.3 Возник вопрос: дорабатывать или переносить на новую версию? Есть какие-либо скрипты миграции?

Добрый день! Специальных правил отдельно для ShopModx нет, ибо все это — MODX. Довольно подробные и дельные советы описаны здесь: ershov.pw/blog/modx-revolution/how-to-protect-modx-revolution-from-possible-hacks

Решил как-то разобраться, как работает аякс в мини-корзине. Смотрел, искал, снова смотрел… и так понял, что после ответа от сервера js записывает нужные значения в определенные теги. (классы num, text, cost) А если нужен мини-вывод всех товаров в корзине? это что же, лезть искать процессор, писать свои дополнялки туда? Собственно, сам вопрос: а почему нельзя конечный html передавать? аяксом запросить нужный tpl и вывести результат разбора? чем это хуже вывода отдельных переменных?