Нужен совет

Всем привет!
Столкнулся с проблемой — а именно из-за моих костылей фильтрация и загрузка товаров происходит оооооочень долго. Виной тому блок внизу карточки товара, где выводится особые характеристики товара, если они есть у товара.

В чанке карточки товара использую
<div class="properties">
  	  	[[!If? &subject=`[[+garantiya]]` &operator=`NOTEMPTY`  &then=`
          <div class=" prop-item prop-guarant" data-placement="top" data-toggle="tooltip" title="Гарантия: [[+garantiya]] [[+garantiya:declension=`год,года,лет`]]">
          <span class="value">[[+garantiya]]</span><span class="val-ed">[[+garantiya:declension=`год,года,лет`]]</span>
          </div>
        `]]

........
........
        [[!If? &subject=`[[+dlinatovara]]` &operator=`NOTEMPTY`  &then=`[[!If? &subject=`[[*id]]` &operator=`inarray` &operand=`16,4920,220,187,221,10,102` &then=`
        <div class=" prop-item prop-dlinatovara" data-placement="top" data-toggle="tooltip" title="Длина: [[+dlinatovara]] м">
          <span class="value">[[+dlinatovara]] м</span>
          </div>` &else=`

        `]]`]]

</div>
Т.е. если у товара есть гарантия то она выводится, если есть вес у товара — он выводится, есть длина — выводится и т.д.
Все бы ничего если бы из-за этого жутко не тормозила бы загрузка товаров. При фильтрации товаров около 4 сек. Это не есть гуд. Какие есть идеи по оптимизации?
Roman
04 октября 2017, 11:38
modx.pro
886
0

Комментарии: 4

Михаил
04 октября 2017, 15:51
+1
Когда начинал разбираться с ModX тоже использовал сниппет if, и вот из-за него все и тормозит.
Советую обратить внимание на fenom или стандартные ModX модификаторы phx, пример:
[[*id:is=`1`:then=`[[$slider]]`]]
Вот все эти модификаторы http://uscms.ru/cms/modx/filtryi-phx-modifikatoryi-v-modx-revolution/
Волков Николай
05 октября 2017, 02:40
+2
На мой взгляд проще перейти на шаблонизатор fenom, который используется по умолчанию в msProducts. Тогда ваш код превратится в:

{if $garantiya is not empty}
<div class=" prop-item prop-guarant" data-placement="top" data-toggle="tooltip" title="Гарантия: {$garantiya} {$garantiya|declension:'год|года|лет'}">
 	<span class="value">{$garantiya}</span><span class="val-ed">{$garantiya|declension:'год|года|лет'}</span>
</div>
{/if}
Но это как пример… Лично я использую значительно более сложные приемы, которые в отличии от стандартного парсера работают с fenom…
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4