UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: webtrend от 25 Декабря 2015, 19:00:44

Название: Usel выборка
Отправлено: webtrend от 25 Декабря 2015, 19:00:44
Добрый день, подскажите пожалуйста есть одежда в каталоге разного размера, хочу с помощью usel в карточке товара сделать выборку похожих товаров.
Т.е. в object-view создаю переменную <xsl:variable name="article" select="//property[@name='article']/value" />
в которой будет храниться артикул объекта. Далее делаю выборку <xsl:apply-templates select="document(concat('usel://pohogie/?article=',$article))" mode="other" />
Сам usel
<selection>
   <target result="pages">
      <type module="catalog" method="object" />
      <category depth="1">{parent}</category>
   </target>
   <property name="article" mode="like">{article}</property>
   <extended>
        <properties>photo, h1, price, rst</properties>
    </extended>
</selection>

По идеи мне нужно чтобы usel посмотрел все объекты данной категории и выбрал те в которых поле артикул частично совпадает с полем артикул объекта
Но что то выходит не так, подскажите пожалуйста!

и обработчик вызова
<xsl:template match="page" mode="other">
      <xsl:variable name="oth">
         <xsl:value-of select=".//@id" />
      </xsl:variable>
      <xsl:if test="$current!=$oth">
         <xsl:variable name="pic_path" select=".//property[@name='photo']/value" />
         <xsl:variable name="pic_min" select="document(concat('udata://system/makeThumbnail/(.', $pic_path, ')/213/320'))/udata/src"/>
         <xsl:variable name="obj_path" select=".//@link" />
         <xsl:variable name="name_path" select=".//property[@name='h1']/value" />
         <xsl:variable name="price_path" select=".//property[@name='price']/value" />
         <xsl:variable name="rst_path" select=".//property[@name='rst']/value" />
         <li>
            <div class="product-container">
               <div class="left-block">
                  <a href="{$obj_path}">
                     <img src="{$pic_min}" class="img-responsive" />
                  </a>
               </div>
               <div class="right-block">
                  <h5 class="product-name">
                     <a href="{$obj_path}">
                        <xsl:value-of select="$name_path" />
                     </a>
                  </h5>
               <xsl:choose>
                  <xsl:when test="$rst_path != 0" >
                     <div class="content_price">
                        <span class="price product-price">
                           <xsl:value-of select="$price_path" />
                           <xsl:text> </xsl:text>
                           <xsl:text>руб.</xsl:text>
                        </span>
                     </div>
                     </xsl:when>            
                     <xsl:otherwise>
                        <div class="content_price">
                           <span class="price product-price">
                              <xsl:value-of select="$price_path" />
                              <xsl:text> </xsl:text>
                              <xsl:text>руб.</xsl:text>
                           </span>
                        </div>
                        <div class="product-star">
                           <xsl:text>Под заказ</xsl:text>
                        </div>
                     </xsl:otherwise>
               </xsl:choose>
               </div>
            </div>
         </li>
      </xsl:if>
            
         
   </xsl:template>
Название: Re: Usel выборка
Отправлено: crazygeorgio от 28 Декабря 2015, 15:41:09
ну тут как минимум <xsl:apply-templates select="document(concat('usel://pohogie/?article=',$article,'&parent=',$parent))/udata/page" mode="other" />

естественно $parent нужно как-то ввести... не зная какой у вас шаблон идет трудно сказать как это можно сделать...
Название: Re: Usel выборка
Отправлено: admin от 01 Января 2016, 06:23:33
Предположим что у вас есть товары со схожими артикулами (в текстовом сравнении через like операнд)
Для полной проверки, убедитесь что у вас все ок с типами данных. то есть в вашем xslt файле подразумевается, что поле article есть у всех типов данных являющимися товарами.

Для проверки данного предположения,
- сделайте копию любого товара (пусть его артикул равен 12345, а его тип данных равен 91).
- модифицируйте свой usel таким образом
<selection>
   <target result="pages">
      <type id="91" />
   </target>
   <property name="article" mode="like">{article}</property>
   <extended>
        <properties>photo, h1, price, rst</properties>
    </extended>
</selection>

- и сделайте вызов из адресной строки site.ru/usel://pohogie/?article=12345
- вы получите в результате эти 2 товара (как минимум)
- затем меняйте строчку <type id="91" /> на <type module="catalog" method="object" />
- и снова делаем вызов из адресной строки site.ru/usel://pohogie/?article=12345

И пишите нам сюда, каков результат (совпадает ли он с первым вариантом usel файла)