Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Axiomateria

Страницы: 1 [2] 3 4 ... 22
16
Шаблоны XSLT / Re: Parents name
« : 21 Апреля 2015, 11:43:04 »
просто укажите его явно, без //
result/page/@type-id
Спасибо, так и сделал.

А теперь история в развёрнутом виде:

На самом деле просто была нужна переменная для подставления значения атрибута @type-id = 178 в вызов
<xsl:apply-templates select="document(concat('udata://catalog/search////', 178))" mode="search_filter"/>
с целью вывести в разных разделах и подразделах каталога форму поиска по фильтрам с привязкой к определённому типу данных по его type-id, как в данном случае  = 178.
 
То есть переменная в итоге получается такая:
<xsl:variable name="own-filter" select="/result[@module = 'catalog' and @method = 'object']/page/@type-id" />
и если её подставлять в шаблоне
    <xsl:template match="udata[@method = 'getObjectsList'][total]" mode="layout_2">
        <xsl:apply-templates select="document(concat('udata://catalog/search////', $own-filter))" mode="search_filter"/>
        <xsl:call-template name="sorting"/>
        <div umi:element-id="{category_id}" umi:module="catalog" umi:method="getObjectsList" umi:sortable="sortable">
            <xsl:apply-templates select="lines/item" mode="short_view_list">
                <xsl:with-param name="cart_items" select="document('udata://emarket/cart/')/udata/items" />
            </xsl:apply-templates>
        </div>
        <xsl:apply-templates select="total" />
    </xsl:template>
то в конечных подразделах каталога в которых есть товары (как "Канальные вентиляторы" и "Радиальные вентиляторы") фильтр выводится, но надо что бы и в старшем разделе "Вентиляторы", тоже фильтр выводился.
 
То есть структура такая (см. приложенный скриншот):
 
1. Вентиляторы
    1.1. Канальные вентиляторы.
    1.2. Радиальные вентиляторы.
    1.3. .............

17
Шаблоны XSLT / Re:Parents name
« : 15 Апреля 2015, 15:24:11 »
Здравствуйте!
Подскажите, пожалуйста, а как мне вытащить значение атрибута type-id="178" из page страницы, которая не в секции <parents>
?

Пытаюсь получить значение "178" простым вызовом
<xsl:value-of  select="/result//page/@type-id" />
но пока удаётся получить не нужный в данном случае type-id="145", то есть первой страницы в секции <parents>, когда как нужен type-id="178" из элемента page, который вне секции <parents>.
<parents>
<page id="304" parentId="0" link="/market/" is-visible="1" is-active="1" object-id="1003" type-id="145" update-time="1423857971" alt-name="market" xlink:href="upage://304">
<basetype id="55" module="catalog" method="category">Разделы каталога</basetype>
<name>Каталог</name>
</page>
<page id="335" parentId="304" link="/market/otoplenie/" is-visible="1" is-active="1" object-id="1084" type-id="145" update-time="1421623680" alt-name="otoplenie" xlink:href="upage://335">
<basetype id="55" module="catalog" method="category">Разделы каталога</basetype>
<name>Отопление</name>
</page>
<page id="379" parentId="335" link="/market/otoplenie/teplye_poly/" is-visible="1" is-active="1" object-id="1777" type-id="145" update-time="1428500035" alt-name="teplye_poly" xlink:href="upage://379">
<basetype id="55" module="catalog" method="category">Разделы каталога</basetype>
<name>Теплые полы</name>
</page>
</parents>
<page id="380" parentId="379" link="/market/otoplenie/teplye_poly/sam_tyoplyj_pol/" is-active="1" object-id="1778" type-id="178" update-time="1429091699" alt-name="sam_tyoplyj_pol">
...
</page>

18
А для начала сама корзина с товарами была бы с включёнными полями для оформления заказа, то есть всё на одной странице сразу и корзина и "Заказ в один шаг", Я это правда уже для своего варианта demodizzy во всю уже внедряю, так как заказчикам нравится именно такой вариант корзины.
Это уже есть, достаточно в свежепоставленном demodizzy зайти на редактирования страницы "Контактная информация", там есть галочка "Оформление заказа в один шаг" (где-то к низу ближе). Поставьте её и у вас заказ будет оформляться на одной странице.

Заказ в один шаг есть, но корзина всё равно в свежепославленном demodizzy отдельная со своим списком товаров.
Я имею ввиду вот что:

19
Партнёры больше бы продали коробок, если бы в неё (в коробочную версию) входил бы один универсальный шаблон.
Хотя конечно, и на этом разработчикам спасибо.

А что по вашему должно входить в этот шаблон?
Хороший вопрос. Я подумаю и вывешу список в отдельную спец.тему про demodizzy, если нет возражений.
А для начала сама корзина с товарами была бы с включёнными полями для оформления заказа, то есть всё на одной странице сразу и корзина и "Заказ в один шаг", Я это правда уже для своего варианта demodizzy во всю уже внедряю, так как заказчикам нравится именно такой вариант корзины.

20
ну, тут ответить легче легкого, адаптивности нет, zoоm эффекта тоже
Знаю, что нет, а вот почему нет - не знаю.
Партнёры больше бы продали коробок, если бы в неё (в коробочную версию) входил бы один универсальный шаблон.
Хотя конечно, и на этом разработчикам спасибо.

21
в тему замечание и у меня вопрос сюда же к разработчикам UMI.CMS имеется на тему оптимизации универсального шаблона demodizzy.

В чем именно вопрос?
Вопросов тьма. Может быть даже стоит открыть на форму отдельную тему demodizzy.
У меня вопросы начинаются с адаптивности вёрстки и подключения сторонних скриптов для визуализации фотографий в увеличенном виде и многое многое другое....

22
У вас немного дургое xml дерево узлов, вам надо вместо /result/page/@type-id использовать вызов page/@type-id
В итоге получиться:
<xsl:variable name="type_info" select="document(concat('utype://',page/@type-id))/udata"/>
<xsl:apply-templates select=".//group[@name='special']/property[@name = $type_info//field[@filterable='filterable']/@name]" mode="info" />
Спасибо, Admin, сработала конструкция!

P.S. судя по всему, шаблон в котором вы работаете сделан на основе demodizzy, там есть несколько неэффективных мест, например вывод страницы с подробным описанием товара

в тему замечание и у меня вопрос сюда же к разработчикам UMI.CMS имеется на тему оптимизации универсального шаблона demodizzy.

23
Axiometeria, из нашей переписки я вижу 2 вопроса.
1. Как получить результат utype текущей страницы (я же правильно понимаю что вы делаете всё это в шаблоне, который отрисовывает страницу с подробным описанием товара?)
Да, именно для страницы объекта каталога с подробным описанием товара (позже и для превью этого товара в разделе каталога).
 
2. Как вывести только те property, которые являются полями для фильтрации
Да.
- С первым вопросом все просто, вам надо сделать переменную типа
<xsl:variable name="type_info" select="document(concat('utype://',/result/page/@type-id))/udata"/>
где вместо /result/page/@type-id у вас, возможно, будет  другой код (в зависимости от того в каком шаблоне идет вызов). Для того, чтобы понять какой путь (xpath) надо прописать до id типа данных текущей страницы, сделайте вывод <xsl:copy-of select="." /> в том шаблоне, в котором все это делаете (вывод нужных property)
 
И приведите этот результат сюда, если не получиться разобраться.

Вот по идее должно срабатывать, то есть код
<xsl:value-of select="document(concat('utype://',/result/page/@type-id))/udata"/>
должен выводит значение ID типа данных страницы объекта каталога в подробном описании товара, но не выводит, от того и в переменной нет ни чего
 <xsl:variable name="type_info" select="document(concat('utype://',/result/page/@type-id))/udata"/>

Вот код, которые по вызову <xsl:copy-of select="." /> формируется:

<udata generation-time="0.019304">
  <page id="1711" parentId="1710" link="/market/akb/akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200/" is-active="1" object-id="2683" type-id="166" update-time="1428321877" alt-name="akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200">
    <basetype id="56" module="catalog" method="object">Объекты каталога</basetype>
    <name>АКБ  35A  евро ATLAS MF5320 п. т. 330А 187*127*200</name>
    <properties>
      <group id="629" name="common">
        <title>Основные параметры</title>
        <property id="2" name="title" type="string">
          <title>Поле TITLE</title>
          <value>АКБ  35A  евро ATLAS MF5320 п. т. 330А 187*127*200</value>
        </property>
        <property id="3" name="h1" type="string">
          <title>Поле H1</title>
          <value>АКБ  35A  евро ATLAS MF5320 п. т. 330А 187*127*200</value>
        </property>
        <property id="6" name="meta_keywords" type="string">
          <title>Поле meta KEYWORDS</title>
          <value></value>
        </property>
        <property id="5" name="meta_descriptions" type="string">
          <title>Поле meta DESCRIPTIONS</title>
          <value></value>
        </property>
        <property id="7" name="tags" type="tags">
          <title>Теги</title>
          <combined></combined>
        </property>
        <property id="280" name="date_create_object" type="date">
          <title>Дата создания объекта</title>
          <value></value>
        </property>
      </group>
      <group id="632" name="cenovye_svojstva">
        <title>Ценовые свойства</title>
        <property id="281" name="price" type="price">
          <title>Цена</title>
          <value xlink:href="udata://emarket/price/2683">2150</value>
        </property>
        <property id="472" name="old_price" type="float">
          <title>Старая цена</title>
          <value></value>
        </property>
      </group>
      <group id="634" name="catalog_stores_props">
        <title>Склады</title>
        <property id="282" name="stores_state" type="optioned">
          <title>Состояние на складе</title>
          <value></value>
        </property>
        <property id="283" name="reserved" type="int">
          <title>Зарезервировано</title>
          <value>0</value>
        </property>
        <property id="284" name="common_quantity" type="int">
          <title>Общее количество на складах</title>
          <value>1</value>
        </property>
      </group>
      <group id="638" name="product">
        <title>1C: Общие свойства</title>
        <property id="253" name="photo" type="img_file">
          <title>Картинка</title>
          <value></value>
        </property>
        <property id="518" name="photo1" type="img_file">
          <title>Картинка1</title>
          <value path="./images/cms/data/import_files/8b/akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200.jpg" folder="/images/cms/data/import_files/8b" name="akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200" ext="jpg" width="400" height="400">/images/cms/data/import_files/8b/akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200.jpg</value>
        </property>
        <property id="519" name="photo2" type="img_file">
          <title>Картинка2</title>
          <value path="./images/cms/data/import_files/8b/akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200_1.jpg" folder="/images/cms/data/import_files/8b" name="akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200_1" ext="jpg" width="400" height="400">/images/cms/data/import_files/8b/akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200_1.jpg</value>
        </property>
        <property id="520" name="photo3" type="img_file">
          <title>Картинка3</title>
          <value path="./images/cms/data/import_files/8b/akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200_2.jpg" folder="/images/cms/data/import_files/8b" name="akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200_2" ext="jpg" width="400" height="400">/images/cms/data/import_files/8b/akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200_2.jpg</value>
        </property>
        <property id="530" name="photo4" type="img_file">
          <title>Картинка4</title>
          <value path="./images/cms/data/import_files/8b/akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200_3.jpg" folder="/images/cms/data/import_files/8b" name="akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200_3" ext="jpg" width="400" height="400">/images/cms/data/import_files/8b/akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200_3.jpg</value>
        </property>
        <property id="531" name="photo5" type="img_file">
          <title>Картинка5</title>
          <value></value>
        </property>
        <property id="539" name="photo6" type="img_file">
          <title>Картинка6</title>
          <value></value>
        </property>
        <property id="540" name="photo7" type="img_file">
          <title>Картинка7</title>
          <value></value>
        </property>
        <property id="417" name="description" type="wysiwyg">
          <title>Описание</title>
          <value><p>бла</p></value>
        </property>
        <property id="532" name="related_items" type="symlink">
          <title>Сопутствующие товары</title>
          <value>
            <page id="1817" parentId="1710" link="/market/akb/akb_60a_tornado/" is-active="1" object-id="2789" type-id="166" update-time="1428159734" alt-name="akb_60a_tornado" xlink:href="upage://1817">
              <basetype id="56" module="catalog" method="object">Объекты каталога</basetype>
              <name>АКБ  60A Торнадо</name>
            </page>
          </value>
        </property>
        <property id="418" name="recommended_items" type="symlink">
          <title>Похожие товары</title>
          <value>
            <page id="1771" parentId="1710" link="/market/akb/akb_56a_evro_bosch_s3_005/" is-active="1" object-id="2743" type-id="166" update-time="1428159732" alt-name="akb_56a_evro_bosch_s3_005" xlink:href="upage://1771">
              <basetype id="56" module="catalog" method="object">Объекты каталога</basetype>
              <name>АКБ  56A  евро BOSCH S3 005</name>
            </page>
            <page id="1711" parentId="1710" link="/market/akb/akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200/" is-active="1" object-id="2683" type-id="166" update-time="1428321877" alt-name="akb_35a_evro_atlas_mf5320_p_t_330a_187_127_200" xlink:href="upage://1711">
              <basetype id="56" module="catalog" method="object">Объекты каталога</basetype>
              <name>АКБ  35A  евро ATLAS MF5320 п. т. 330А 187*127*200</name>
            </page>
          </value>
        </property>
        <property id="548" name="new_order" type="boolean">
          <title>Новый товар</title>
          <value></value>
        </property>
        <property id="461" name="special_offers" type="boolean">
          <title>Специальные предложения</title>
          <value>1</value>
        </property>
        <property id="462" name="seasonal_offers" type="boolean">
          <title>Сезонные предложения</title>
          <value></value>
        </property>
        <property id="521" name="1c_catalog_id" type="string">
          <title>Идентификатор каталога 1С</title>
          <value>a704c57b-fc7c-11df-b5d1-005056c00008</value>
        </property>
        <property id="522" name="1c_product_id" type="string">
          <title>Идентификатор в 1С</title>
          <value>8b294e01-7337-11e0-b322-001517557571</value>
        </property>
        <property id="523" name="artikul" type="string">
          <title>Артикул</title>
          <value>MF5320</value>
        </property>
        <property id="524" name="bar_code" type="string">
          <title>Штрих-код</title>
          <value></value>
        </property>
        <property id="525" name="weight" type="float">
          <title>Вес</title>
          <value></value>
        </property>
      </group>
      <group id="639" name="special">
        <title>1C: Специфические свойства</title>
        <property id="538" name="manufacturer" type="relation">
          <title>Производитель</title>
          <value>
            <item id="2973" name="ATLAS" type-id="164" ownerId="2" xlink:href="uobject://2973"></item>
          </value>
        </property>
        <property id="527" name="emkost" type="string">
          <title>Емкость</title>
          <value>35 Ач</value>
        </property>
        <property id="528" name="raspolozhenie_plyusovoj_klemmy" type="string">
          <title>Расположение плюсовой клеммы</title>
          <value>Слева</value>
        </property>
        <property id="529" name="obwee_dlya_vseh" type="string">
          <title>Общее для Всех</title>
          <value></value>
        </property>
        <property id="542" name="vysota_mm" type="string">
          <title>Высота, мм</title>
          <value>120</value>
        </property>
        <property id="543" name="dlina_mm" type="string">
          <title>Длина, мм</title>
          <value>220</value>
        </property>
        <property id="544" name="shirina_mm" type="string">
          <title>Ширина, мм</title>
          <value>320</value>
        </property>
        <property id="545" name="ispolnenie" type="string">
          <title>Исполнение</title>
          <value>Для европы</value>
        </property>
        <property id="546" name="puskovoj_tok_a" type="string">
          <title>Пусковой ток, А</title>
          <value>320</value>
        </property>
      </group>
      <group id="630" name="menu_view">
        <title>Отображение в меню</title>
        <property id="8" name="menu_pic_ua" type="img_file">
          <title>Изображение неактивного раздела</title>
          <value></value>
        </property>
        <property id="9" name="menu_pic_a" type="img_file">
          <title>Изображение активного раздела</title>
          <value></value>
        </property>
        <property id="10" name="header_pic" type="img_file">
          <title>Изображение для заголовка</title>
          <value></value>
        </property>
      </group>
      <group id="631" name="more_params">
        <title>Дополнительные параметры</title>
        <property id="11" name="robots_deny" type="boolean">
          <title>Запретить индексацию поисковиками</title>
          <value></value>
        </property>
        <property id="14" name="is_unindexed" type="boolean">
          <title>Исключить из поиска</title>
          <value></value>
        </property>
      </group>
      <group id="635" name="rate_voters">
        <title>Количество проголосовавших</title>
        <property id="15" name="rate_voters" type="int">
          <title>Количество проголосовавших</title>
          <value></value>
        </property>
        <property id="16" name="rate_sum" type="int">
          <title>Сумма баллов</title>
          <value></value>
        </property>
      </group>
      <group id="637" name="locks">
        <title>Блокировка</title>
        <property id="21" name="locktime" type="date">
          <title>Время блокировки</title>
          <value></value>
        </property>
        <property id="22" name="lockuser" type="int">
          <title>Блокирующий пользователь</title>
          <value></value>
        </property>
      </group>
      <group id="643" name="how_to_get">
        <title>Как получить</title>
        <property id="534" name="osobennosti" type="wysiwyg">
          <title>Особые условия</title>
          <value><p>В этом поле описание конкретных нюансов, связанных именно с данным товаром при получении...</p></value>
        </property>
        <property id="535" name="kak_poluchit_tovar_podrobnee" type="symlink">
          <title>Как получить товар - общая информация</title>
          <value>
            <page id="1960" parentId="190" link="/main/kak_poluchit/" is-visible="1" is-active="1" object-id="2961" type-id="60" type-guid="content-page" update-time="1426866494" alt-name="kak_poluchit" xlink:href="upage://1960">
              <basetype id="30" module="content">Страницы контента</basetype>
              <name>Как получить ?</name>
            </page>
          </value>
        </property>
      </group>
      <group id="647" name="how_to_pay">
        <title>Как оплатить</title>
        <property id="536" name="osobye_usloviya" type="wysiwyg">
          <title>Особые условия</title>
          <value><p>В этом поле описание конкретных нюансов, связанных именно с данным товаром при оплате...</p></value>
        </property>
        <property id="537" name="kak_oplatit_tovar_podrobnosti" type="symlink">
          <title>Как оплатить товар - общая информация</title>
          <value>
            <page id="212" parentId="190" link="/main/kak_oplatit/" is-visible="1" is-active="1" object-id="944" type-id="60" type-guid="content-page" update-time="1425300217" alt-name="kak_oplatit" xlink:href="upage://212">
              <basetype id="30" module="content">Страницы контента</basetype>
              <name>Как оплатить ?</name>
            </page>
          </value>
        </property>
      </group>
    </properties>
  </page>
</udata>

- Со вторым вопросом еще проще, для начала проверmте, что моя конструкция работает у вас. Сделайте мой пример:
<xsl:variable name="type_info" select="document('utype://86'))/udata"/>
<xsl:apply-templates select=".//group[@name='special']/property[@name = $type_info//field[@filterable='filterable']/@name]" mode="info" />
где вместо 86 подставте id типа данных любого существующего товара. И посмотрите на странице данного товара, удалось ли вывести только фильтруемые поля с учетом, что переменную $type_info вы точно получили (так как руками указали нужный id)
Да. Эта конструкция работает.
Спасибо Admin!

Я добавил шаблон обработки вызова всех property дабы кроме содержания надо ещё и название фильтруемого поля вывести:
xsl:variable name="type_info" select="document('utype://86')/udata"/>
<xsl:apply-templates select=".//group[@name='special']/property[@name = $type_info//field[@filterable='filterable']/@name]" mode="filtered_special"  />

    <xsl:template match="//group[@name='special']/property" mode="filtered_special">
        <xsl:value-of select="title"/>
        <xsl:value-of select="value//@name"/>
    </xsl:template>
Вот только остался вопрос про то, что ID типа страниц для объектов каталога разные и как их ввести в переменную.

24
И вот одна из фильтруемых характеристик товара utype://86, которую хотелось бы вывести в описании технических характеристик в объекте каталога по признаку типа поля "Фильтруемое":
<group id="567" name="special" title="1C: Специфические свойства" visible="visible">
<field id="538" name="manufacturer" title="Производитель" field-type-id="11" visible="visible" filterable="filterable" guide-id="164">
<type id="11" name="Выпадающий список" data-type="relation"/>
</field>
</group>

25
мой пример исходит из того что вы вставляете данные строки в шаблон который обрабатывает узел result и ему, как следствие, доступен id типа данных текущей страницы (его можно получить запросом /result/page/@type-id) если вы вставляете это в другом месте, то просто подставте id типа данных или проверте отдельно какое выражение возвращает нужный вам id тип данных.

Вся суть моего кода далеко не в том, чтобы через протокол utype получить инфо по какому-то типу данных. Это вы и так сделали судя по вашему первому сообщению (а если нет, то замените первую строчку на <xsl:variable name="type_info" select="document('utype://86'))/udata"/>). Суть именно в том? что при запросе property сравнить их @name и @name из информации взятой через протокол utype через замысловатый xpath запрос (вторая строчка из моего кода)
В общем код 
<xsl:variable name="type_info" select="document('utype://86'))/udata"/>
выше я тоже привёл условно для примера так сказатьт, где ID 86 это тип данных "Объекта каталога", но в моём случае регулярно происходит импорт товаров из 1С и при этом процессе создаётся собственное структурное дерево из типов данных 1С, у которых понятное дело свои собственные ID.
Поэтому я и пытаюсь найти такое универсальное решение, которые бы не было бы привязано к какому-то конкретному ID типа данных, а просто выводило только те поля, что предназначены для фильтров поиска товаров в объекте каталога.


26
делаете так:
<!--помещаем в переменную информацию о типе данных -->
<xsl:variable name="type_info" select="document(concat('utype://',/result/page/@type-id))/udata"/>
<!--получаем выборку всех property, имя которых хоть раз встречается среди узлов field из перемонной $type_info. C учетом, что у данных узлов есть атрибут [b]filterable [/b](означает, что данное поле фильтруемое). -->
<xsl:apply-templates select=".//group[@name='special']/property[@name = $type_info//field[@filterable='filterable']/@name]" mode="info" />

В объекте каталога (файл object-view.xsl из demodizzy) ни чего не вывелось по Вашему примеру кода и я тогда просто вызвал
<xsl:value-of select="document(concat('utype://',/result/page/@type-id))/udata"/> 
что бы посмотреть что вообще вкладывается в переменную  "type_info", но система выдала "Не найдено".
То есть  и вызов
<xsl:apply-templates select=".//group[@name='special']/property[@name = $type_info//field[@filterable='filterable']/@name]" />
не срабатывает как следствие.

27
Здравствуйте!
Эту задачу Вам нужно сделать именно в xslt? Просто можно попробовать ещё другой вариант. Написать макрос на php и вызвать его. В макросе php с фильтруемыми полями думаю будет проще - можно подглядеть в исходники umi.
Здравствуйте!
Да, задачка именно на XSLT должна быть решена и вот какой вариант (пока не опробованный на практике) у меня имеется для
проверки на то, является ли поле фильтруемым:
<xsl:for-each select="//group[@name = 'special']/property">
  <xsl:variable name="prop_id" select="@id" />
 
  <xsl:if test="document(concat('utype://', @id))//field[@id = $prop_id]/@filterable = 'filterable' ">
      <xsl:value-of select="value" /> 
  </xsl:if>
</xsl:for-each>

28
Здравствуйте!
В превью товара в разделе каталога надо вывести только те технические характеристики, чьи поля в типе данных объекта каталога этого товара отмечены как поля "Фильтруемые".
Путь решения задачи лежит через протокол utype, который описывается здесь:
http://dev.docs.umi-cms.ru/shablony_i_makrosy/xslt-shablonizator_umi_cms/tipy_dannyh_protokol_utype/
Получить данные по этому протоколу дело не хитрое по значению ID типа данных объекта каталога (в моём случае он = 86) однако не понятно пока как теперь в этот сам объект каталога подключить проверку так что бы отсеять только фильтруемые поля для вывода в превью товара из всех остальных полей?
В моём случае известен не только ID типа данных объекта каталога (86) , но и название группы полей "special".

Для начала я получаю в переменную ID всех property группы полей special
<xsl:variable name="GroupSpecialPropertyId" select=".//group[@name = 'special']/property/@id"/>  
это как я понимаю надо что бы в дальнейшем сравнивать по этим полученным значениям ID соответствующие узлы <field> с целью проверки наличия у них атрибута  filterable со значением "filterable".

Но вот на этом месте с проверкой соответствия я и застрял, не понятно пока как теперь проверить это соответствие.
Что посоветуете ?

Пока только в объекте каталога выводятся все ID из property (в данном случае три штуки), а надо только данные для id="538"
<xsl:apply-templates select="$GroupSpecialPropertyId" />

<group id="639" name="special">
<title>1C: Специфические свойства</title>
<property id="538" name="manufacturer" type="relation">
<title>Производитель</title>
<value>
<item id="2973" name="ATLAS" type-id="164" ownerId="2" xlink:href="uobject://2973"/>
</value>
</property>
<property id="527" name="emkost" type="string">
<title>Емкость</title>
<value>38 Ач</value>
</property>
<property id="528" name="raspolozhenie_plyusovoj_klemmy" type="string">
<title>Расположение плюсовой клеммы</title>
<value>Справа</value>
</property>
</group>
</properties>

29
то есть в теге <a>...</a> добавилось не нужное форматирование - как его убрать ?

А вот как: <xsl:value-of select="." disable-output-escaping="yes" />  и экранирование символов отключается в файле .../catalog/common.xsl

30
Если вы хотите выводить результаты поиска в виде краткой краточки товара, то стоит организовать поиск таким образом, чтобы он искал только среди товаров. Для этого вам достаточно в форме поиска, добавить поле, указывающее какой базовый тип данных вас интересует.
<input type="hidden" value="6" name="search_types">
В данном примере, 6 - это id базового типа данных "Объект каталога", базовые типы данных можно увидеть в модуле "Шаблоны данных", на странице "настройки модуля"

По поводу вывода. Вы можете просто поменять mode/ В большинстве случаев, этого будет достаточно. То есть
<xsl:apply-templates select="items/item" mode="search-result" />
заменить на
<xsl:apply-templates select="items/item" mode="short-view" />

Стоит помнить, что если при вызове getObjectsList вы используете ?extProps, то такой же ?extProps надо прописать вызову
<xsl:apply-templates select="document('udata://search/search_do')" />


Вот всё сделал, как и написано. Превью объектов вывелись как надо, то есть по шаблону категории товаров, но кроме одного нюанса - в моём случае названия объектов в их превью ссылки на подробные карточки товаров и в этих ссылках экроме названия самого объекта включились символы <p><b> Название объекта </p></b>   .

В полном виде это так выводится:

<a href="/market/ventilyaciya/ventilyatory/kanal_nye_ventilyatory/ventilyator_pervyj_no_ne_poslednij_test_11_panasonic/" class="title" umi:element-id="320" umi:field-name="name" umi:delete="delete" title="Вентилятор первый но не последний с длинным названием в три строки как бы - ТЕСТ 11 - Panasonic"><p>Радиальный <b>вентилятор</b> ТЕСТ 22 - LG Мульти сплит-система для 2-х помещений площадью до 25 м2 каждое на общую площадь до 50 м2 Мульти сплит-система (комплект) </p></a>

то есть в теге <a>...</a> добавилось не нужное форматирование - как его убрать ?

Страницы: 1 [2] 3 4 ... 22