Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
отображение запроса USEL в виде запроса SQL

Автор BaceHРаздел Custom макросы

Ответов: 5
Просмотров: 5029
Последний ответ 11 Января 2013, 19:48:58
от admin
Прошу помощи с usel - необходимо отфильтровать новости по кастомному полю

Автор AksukРаздел Шаблоны XSLT

Ответов: 11
Просмотров: 7475
Последний ответ 05 Марта 2012, 23:01:29
от Aksuk
Вывод объектов каталога через USEL по элементу в справочнике

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 6
Просмотров: 5527
Последний ответ 20 Июля 2013, 20:31:56
от NOIRMAN
Вывод порядковый номер (нумерация) при usel выдачи

Автор atachРаздел Custom макросы

Ответов: 5
Просмотров: 3996
Последний ответ 25 Сентября 2013, 13:37:27
от admin
Пагинация при выводе данных через usel

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 9
Просмотров: 6310
Последний ответ 18 Декабря 2013, 23:48:27
от Axiomateria

0 Пользователей и 1 Гость просматривают эту тему.

*

webtrend

  • **
  • 89
  • +0/-0
    • Просмотр профиля
Usel выборка
« : 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>

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
Re: Usel выборка
« Ответ #1 : 28 Декабря 2015, 15:41:09 »
ну тут как минимум <xsl:apply-templates select="document(concat('usel://pohogie/?article=',$article,'&parent=',$parent))/udata/page" mode="other" />

естественно $parent нужно как-то ввести... не зная какой у вас шаблон идет трудно сказать как это можно сделать...
« Последнее редактирование: 29 Декабря 2015, 00:01:31 от crazygeorgio »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re: Usel выборка
« Ответ #2 : 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 файла)