Вопрос по miniShope2

Добрый день! Столкнулся с проблемой в miniShop2
Суть такая…

Вывод сниппета

[[msProducts?
	&parents 	= `3`
	&tplWrapper = `wrapper`
	&tpl 		= `item`
]]

Чанк item

<li class="item">
	[[$tpl.msProducts.row.my]]
</li>

Чанк tpl.msProducts.row.my

.................

<span class="product__labels">[[+new]] [[+popular]] [[+favorite]]</span></p>

.................

<!--minishop2_popular <span class="glyphicon" title="[[%ms2_frontend_popular]]"></span>-->
<!--minishop2_new <span class="glyphicon" title="[[%ms2_frontend_new]]"></span>-->
<!--minishop2_favorite <span class="glyphicon" title="[[%ms2_frontend_favorite]]"></span>-->
<!--minishop2_old_price <span class="old_price">[[+old_price]] [[%ms2_frontend_currency]]</span>-->

В результате всего этого выводится:

1 0 0

Должны выводиться блоки с иконками «Новый», «Популярный товар», «Особый товар», т.е. те блоки который в чанке tpl.msProducts.row.my занесены в комментарий.

Если в чанке item напрямую вставить код из tpl.msProducts.row.my, тогда все работает.

Но хотелось первый вариант использовать. Как быть с данной проблемой? почему она возникает и как ее решить?

П.С. связано ли это с miniShop2 или это особенность работы MODx?

Нашел выход:

&tpl 		= `@INLINE <li class="item">[[$product-card]]</li>`
Максим
19 ноября 2015, 11:24
modx.pro
1 525
0

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

Владислав
19 ноября 2015, 14:44
0
А зачем ты чанк в чанк засунул?
    Максим
    19 ноября 2015, 14:52
    0
    <li class="item">
    	[[$tpl.msProducts.row.my]]
    </li>
    у li класс может меняться, в зависимости где нужно вставить блок…
    так же может меняться и сам тег, например, div…

    тут конечно можно что-то придумать, сделать по-другому, но все равно интересно почему так… т.е. плэйсхолдеры парсятся нормально, а вот именно эта фишка с подстановкой блока из комментария не работает почему-то…
      Владислав
      19 ноября 2015, 14:54
      0
      Сделай все таки в одном чанке. А если нужно чтобы класс менялся, подставляй условие типа
      [[+template:is=`1`:then=`class="item"`]]
        Максим
        19 ноября 2015, 15:01
        0
        Спасибо, ну это мне кажется еще большая жесть и извращение )
    Максим
    19 ноября 2015, 14:52
    0
    Чанк в чанке это в самом деле плохая идея. А вообще можно попробовать сделать так:
    [[$tpl.msProducts.row.my? &new=`[[+new]]`]]
      Максим
      19 ноября 2015, 15:00
      0
      А почему плохая идея?
      Чтобы не дублировать кусок кода, я вынес его в чанк и там где нужно вставляю… вроде логично наоборот? для это и придуманы они вроде были?

      [[$tpl.msProducts.row.my? &new=`[[+new]]`]]
      можно попробовать, а что это даст? [[+new]] вроде и так парсится и заменяется на цифры… но спасибо, попробую…
        Максим
        19 ноября 2015, 15:09
        0
        Видимо я неправильно понял вопрос. Что должно выводиться?
        Если
        <span class="product__labels">[[+new]] [[+popular]] [[+favorite]]</span></p>
        то все в порядке, оно и должно выводить
        <span class="product__labels">1 0 0</span>
        А если нужно с иконками в зависимости от значения [[+new]] и т.п., то надо или пользоваться модификаторами или параметром prepareSnippet или использовать fenom.

        А идея плохая, потому что чем меньше работает родной парсер, тем лучше (:
          Максим
          19 ноября 2015, 15:54
          0
          аа… если только с этой точки зрения… тогда соглашусь…

          должно выводиться:

          <span class="glyphicon" title="[[%ms2_frontend_popular]]"></span>,
          если [[+popular]] == 1

          <span class="glyphicon" title="[[%ms2_frontend_new]]"></span>
          если [[+new]] == 1

          <span class="glyphicon" title="[[%ms2_frontend_favorite]]"></span>
          если [[+favorite]] == 1

          Это в miniShop2 по-молчанию так происходит в стандартных чанках… без модификаторов…
            Максим
            19 ноября 2015, 16:08
            -1
            Не знал до сегодняшнего дня, а оказывается Василий придумал такой вот костыль с комментариями. Но работать этот костыль будет только если чанки обрабатывает pdoTools, а не парсер MODX. Вот и не работает, когда чанк в чанке.
              Максим
              19 ноября 2015, 16:14
              -1
              ок, попробую с pdoResources
              там еще где-то у него были подобные «костыли» с комментариями )
      Максим
      21 ноября 2015, 12:56
      0
      Нашел выход:

      &tpl 		= `@INLINE <li class="carousel__item">[[$product-card]]</li>`
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        11