Вывод уникальных свойств товара.

Привет!
Прошу помощи, т.к. испробовал всё что в моих силах, но желаемого результата по прежнему нет :(
Вводные:
— Цель — выводить в каталоге товары + некоторые их уникальные свойства (имя свойства+значение). Но чтобы свойства, значение которых отсутствует не выводились вообще. К примеру, если взять воздушный шар (шары — одна группа товаров) и гантелю (гантели — другая), то у шара уникальное свойство для данной группы товаров — объем, а у гантели — вес.
— Свойства товара подключаю как плагин.
— Казалось, нет ничего проще. А оказалось, что просто казалось :). Написал скрипт проверяющий наличие значения у свойства и подставляющий фрагмент кода. И… запихнул его в сниппет.
— Проверяю для товаров одинаковой группы одинаковые значения :) Отключаю кэширование сниппета — выводится значение только у первого по списку товара этой группы :( Вставляю код в tpl.msProducts.row, а при рендере код автоматически комментится.
— Написал скрипт на JS — адекватно работает только внутри tpl.msProducts.row. Вывод чанком дает такой же результат как и сниппетом, но отрендеренная страница содержит внутри себя текст скрипта :(

Впросы:
— как заставить сниппет вычислять значения на каждом цикле?
— или как вставить код в чанк tpl.msProducts.row так, чтобы он не самокомментился?

Спасибо!
Boris Akimenko
07 сентября 2013, 09:08
modx.pro
1 589
0

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

Василий Наумкин
07 сентября 2013, 13:12
0
Я нифига не понял, в чем может быть проблема. Ничего «самокомментироваться» не может. Мы же не домохозяйки, у которых «оно само сломалось, я ничего не делала!»

Версия MS2?
Версия pdoTools?
Код скрипта?
Код чанка?
    Boris Akimenko
    07 сентября 2013, 13:35
    0
    MS2: 2.0.1-pl3
    pdoTools:1.5.0-rc
    PHP: 5.3
    Сниппет:
    if ("[[+playTime]]")
     {
      echo ( '<div><img src="[[++assets_url]]images/shop/time.gif" title="Время игры" /><span>[[+playTime]]</span></div>');
     }
    if ("[[+numberOfPlayers]]")
     {
      echo ('<div><img src="[[++assets_url]]images/shop/players.gif" title="Количество игроков" /><span>[[+numberOfPlayers]]</span></div>');
     }
    if ("[[+numberOfPieces]]")
     {
      echo ('<div><img src="[[++assets_url]]images/shop/pieces.gif" title="Количество фрагментов пазла" /><span>[[+numberOfPieces]]</span></div>');
     }
    Чанк:
    <div class="shopItem shadowed">
    	<div class="shopItemInfoSigns" id="prop">
    [[infoSigns]]
    	</div>
    	<div class="shopItemImage"><a href="[[~[[+id]]]]"><img src="[[+thumb:default=`[[++assets_url]]components/minishop2/img/web/shopItemEmpty.png`]]" /></a></div>
    	<h2><a href="[[~[[+id]]]]">[[+pagetitle]]</h2>
    	<p>[[+introtext]]</p>
    	<div class="shopItemPrice"><span class="rounded10">Цена: [[+price]] [[%ms2_frontend_currency]]</span></div>
    	<div class="shopItemBuy"><a href="#" class="ms2_link" data-action="cart/add" data-id="[[+id]]" data-count="1" data-options='[]'><i class="icon-barcode"></i><span class="rounded10" title="[[%ms2_frontend_add_to_cart]]"/><strong>Купить</strong></span></a></div>
    <!--			<span class="flags">[[+new]] [[+popular]] [[+favorite]]</span>
    			
    			[[+old_price:gt=`0`:then=`<span class="old_price">[[+old_price]] [[%ms2_frontend_currency]]</span>`:else=``]]
    	
    -->		
    </div>
    
    <!--minishop2_popular <i class="icon-star" title="[[%ms2_frontend_popular]]"></i>-->
    <!--minishop2_new <i class="icon-flag" title="[[%ms2_frontend_new]]"></i>-->
    <!--minishop2_favorite <i class="icon-bookmark" title="[[%ms2_frontend_favorite]]"></i>-->
      Boris Akimenko
      07 сентября 2013, 13:43
      0
      По поводу самокоммента, если в чанк вместо вызова сниппета вставить вот такой код:
      <?php
        echo "Тест";
      ?>
      то рендер будет вот такой:
      <div class="shopItemInfoSigns" id="prop">
      <!--?php
        echo "Тест";
      ?-->
      	</div>
      Василий Наумкин
      07 сентября 2013, 14:15
      0
      if ("[[+playTime]]")
      Эмм… Ты разницу между html и php понимаешь?

      Плейсхолдеры — это места в чанках html, куда php подставляет значения. Внутри сниппета php ими оперировать нельзя.

      echo в MODX тоже не принято применять, ибо ты выводишь строку сразу в месте выполнения, а не добавляешь в вывод.

      Я не смогу тебе помочь, проще сразу заказать нужный сниппет у фрилансера.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5