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

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

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

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

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

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

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

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

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

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

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

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

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Usel выборка и поле ссылка на дерево
« Ответ #75 : 17 Марта 2016, 20:53:57 »
Пропишите в \templates\demodizzy\xslt\default.xsl
	<xsl:variable name="result" select="/" />

И в своем шаблоне используйте это как:
	<xsl:apply-templates select="document(concat('usel://carousel_main/', $result/result/page/@id))/udata" mode="carousel_specialisty" />
Мой блог http://umicms.me

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Usel выборка и поле ссылка на дерево
« Ответ #76 : 17 Марта 2016, 20:55:04 »
Ну или можно просто использовать $document-page-id и ничего не прописывать. Но нужно убедиться, что есть строка:
	<xsl:variable name="document-page-id" select="/result/@pageId" />
Мой блог http://umicms.me

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Usel выборка и поле ссылка на дерево
« Ответ #77 : 17 Марта 2016, 22:52:55 »
Сделала пока по первому способу, но если находишься на какой-то странице типа "о нас", в меню у Направления в блоке нету специалистов в карусели.

А если находишься на странице конкретного какого-то Направления, например Направление1
То в меню, если наведешь на Направление2 в блоке у карусели видишь Специалистов Направления1, а не Направления2
« Последнее редактирование: 17 Марта 2016, 22:55:06 от Sumrakrnd »

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Usel выборка и поле ссылка на дерево
« Ответ #78 : 18 Марта 2016, 00:32:02 »
Естественно, ведь страница "о нас" - это не направление. Если нужно - делайте проверку на то, в каком конкретно месте находитесь, и выводите карусель только там, где нужно.
Мой блог http://umicms.me

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Usel выборка и поле ссылка на дерево
« Ответ #79 : 18 Марта 2016, 01:14:54 »
В том то и дело, что если находишься на "О нас" тоже должны отображаться Специалисты.. Т_Т

Поэтому и надо как-то, чтобы это было завязано на item.
Т.к. Специалисты должны показываться по Направлениям в меню не зависимо от местонахождение на сайте.
« Последнее редактирование: 18 Марта 2016, 02:08:39 от Sumrakrnd »

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Usel выборка и поле ссылка на дерево
« Ответ #80 : 18 Марта 2016, 16:56:03 »
вопрос, тут идет обращение к конкретному item в меню, так?
 <xsl:template match="item[@id = '1000']" mode="menu">
          <a href="{@link}">
              <xsl:value-of select="."/>
          </a>
  </xsl:template>

Нельзя как-то это "адаптировать"? Это можно назвать принцип работы?
« Последнее редактирование: 18 Марта 2016, 17:00:11 от Sumrakrnd »

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Usel выборка и поле ссылка на дерево
« Ответ #81 : 21 Марта 2016, 15:07:14 »
вопрос, тут идет обращение к конкретному item в меню, так?
 <xsl:template match="item[@id = '1000']" mode="menu">
          <a href="{@link}">
              <xsl:value-of select="."/>
          </a>
  </xsl:template>

Нельзя как-то это "адаптировать"? Это можно назвать принцип работы?

Это нельзя назвать "обращением к конкретному item" - это то, как будет выводиться конкретный item (в данном случае с id = 1000)

В связи с этим все еще непонятно, что именно вы хотите адаптировать и какой принцип работы ожидаете. А особенно, учитывая, что вы одновременно говорите про разные страницы и из ваших слов непонятно как у вас построена архитектура системы, какая информация видна на странице у пользователя и какие где макросы используются.

Сформулируйте пожалуйста конкретный вопрос и тогда кто-нибудь возможно сможет дать на него ответ. Пока все как в тумане
Мой блог http://umicms.me

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Usel выборка и поле ссылка на дерево
« Ответ #82 : 21 Марта 2016, 15:53:50 »
Понятно, что на конкретный. Ну ладно, сперва так. Главное чтобы сейчас я правильно поняла, что нужно @_@

У меня есть меню с Направлениями.

На всех страницах, кроме страницы контакты это меню отображается для пользователя.

При наведение курсора на Направление (top_drop) появляется плашка (top_drop3), в которой находятся разделы.
В этой же плашке находится карусель со Специалистами, отображение которых должны соответствовать Направлению.
При том не важно на какой странице пользователь находится (о компании или специалиста), когда он водит по меню, то он должен видеть в плашка у карусели Специалистов того Направления, на которое он навел курсор.

Вы дали совет, он сработал, но дал немного не тот результат, что нужно.
Но он идет грубо говоря от глобальной страницы, так?
- Если находишься на странице "о компании", в меню у Направления в блоке соответственно нету Специалистов в карусели.
- Если находишься на странице конкретного какого-то Направления, например Направление1, то в меню, если наведешь на Направление2 в блоке у карусели видишь Специалистов Направления1, а не Направления2.

Прописала в \templates\demodizzy\xslt\default.xsl
<xsl:variable name="result" select="/" />

А вот меню:
    <xsl:template match="udata[@module = 'content'][@method = 'menu']" mode="top_menu">
        <xsl:apply-templates select="item" mode="top_menu"/>
    </xsl:template>

    <xsl:template match="udata[@module = 'menu']/item" mode="top_menu">
        <!--выбираются изображения неактивных разделов страниц-->
        <xsl:variable name="menu_bg" select="document(concat('upage://', @id, '.menu_pic_ua'))/udata/property/value" />
        <xsl:variable name="menu_bg_style" select="concat('background-image: url(', $menu_bg, ');')" />

        <li class="tab">
            <!-- изображения неактивных разделов страниц вставляются как инлайн background-image -->
            <xsl:attribute name="style">
                <xsl:value-of select="$menu_bg_style" />
            </xsl:attribute>
<!-- Ховер для tab-->
<div class="inner-hover"></div>

            <span>
                <xsl:value-of select="."/>
            </span>
            <xsl:apply-templates select="document(concat('udata://content/menu/0/2/', @id))/udata" mode="top_drop">
                <xsl:with-param name="position" select="position()"/>
            </xsl:apply-templates>
        </li>
    </xsl:template>

    <xsl:template match="udata" mode="top_drop"/>

    <xsl:template match="udata[items]" mode="top_drop">
        <xsl:param name="position"/>
        <div class="tab-content">
            <div class="menu__wrap">
                <xsl:if test="count(items/item) &gt; 20">
                    <xsl:attribute name="class">menu__wrap menu__wrap--long-list</xsl:attribute>
                </xsl:if>
                <ul>
                    <xsl:apply-templates select="items/item" mode="top_drop"/>
                </ul>

            </div>
            <xsl:if test="count(items/item) &gt; 20">
                <button class="btn-menu__show-more">Все отделения</button>
            </xsl:if>
        </div>
    </xsl:template>

    <xsl:template match="item" mode="top_drop">

        <li>
            <xsl:choose>
                <xsl:when test="position() = 20">
                    <xsl:attribute name="class">long-list-breaker</xsl:attribute>
                </xsl:when>
                <xsl:when test="items/item">
                    <xsl:attribute name="class">dropdown</xsl:attribute>
                </xsl:when>
                <xsl:when test="position() = 20 and items/item">
                    <xsl:attribute name="class">dropdown long-list-breaker</xsl:attribute>
                </xsl:when>
            </xsl:choose>
            <xsl:value-of select="link"/>
            <a href="{@link}">
                <xsl:value-of select="@name"/>
            </a>
            <xsl:apply-templates select="items" mode="top_drop3"/>
        </li>
    </xsl:template>


    <xsl:template match="items" mode="top_drop3">
        <span class="polygon"></span>
        <div class="under_menu">
            <div class="block-link">
                <span><a href="/action" class="orange">Акции</a></span>
                <span><a href="/price" class="blue">Цены</a></span>
            </div>
            <div class="block-info">
                <div class="list-services">
                    <xsl:apply-templates select="item" mode="top_drop3"/>
                </div>
<!-- Карусель -->
<div class="carousel-container">
<!-- вызов запроса для специалистов -->
<xsl:apply-templates select="document(concat('usel://carousel_main/', $result/result/page/@id))/udata" mode="carousel_specialisty" />

<button class="prev"></button>
<button class="next"></button>
</div>
            </div>
        </div>
    </xsl:template>

    <xsl:template match="item" mode="top_drop3">
        <a href="{@link}">
            <xsl:value-of select="@name"/>
        </a>
    </xsl:template>

<!-- specialisty carousel -->
    <xsl:template match="udata" mode="carousel_specialisty">
<ul class="carousel">
<xsl:apply-templates select="page" mode="carousel_human"/>
</ul>
</xsl:template>
<xsl:template match="page" mode="carousel_human">
<li><a href="{@link}" class="link_human">
<span class="text">
<img src="{extended/properties/property[@name='fotografiya']/value}" alt="" />
<big><xsl:value-of select="extended/properties/property[@name = 'familiya']/value"/></big>
<small><xsl:value-of select="extended/properties/property[@name = 'imya_otchestvo']/value"/></small>
</span></a>
<a href="#win1" class="apply">записаться</a>
</li>
</xsl:template>

Так выглядит "структура"
|Категория1
--Направление1
~~~Раздел1
~~~Раздел2
--Направление2
--Направление3
~~~Раздел1
~~~Раздел2
--Направление4
|Категория2
--Направление1
~~~Раздел1
~~~Раздел2
--Направление2
|Категория3
--Направление1
--Направление2
~~~Раздел1
~~~Раздел2
--Направление3
--Направление4
~~~Раздел1
~~~Раздел2
|Категория4
--Направление1
--Направление2
~~~Раздел1
~~~Раздел2

P.S.: item- это страница и id у item - это id страницы, но получается мне надо взять не просто id страницы, а именно id относящегося к item в меню, так?
« Последнее редактирование: 21 Марта 2016, 16:06:31 от Sumrakrnd »

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Usel выборка и поле ссылка на дерево
« Ответ #83 : 21 Марта 2016, 16:39:48 »
У вас вроде пол кода нормально написано, а вторая половина - через ... . Джекил и Хайт какой-то.
Вот этот код за что отвечает?
<xsl:template match="items" mode="top_drop3">
        <span class="polygon"></span>
        <div class="under_menu">
            <div class="block-link">
                <span><a href="/action" class="orange">Акции</a></span>
                <span><a href="/price" class="blue">Цены</a></span>
            </div>
            <div class="block-info">
                <div class="list-services">
                    <xsl:apply-templates select="item" mode="top_drop3"/>
                </div>
<!-- Карусель -->
<div class="carousel-container">
<!-- вызов запроса для специалистов -->
<xsl:apply-templates select="document(concat('usel://carousel_main/', $result/result/page/@id))/udata" mode="carousel_specialisty" />

<button class="prev"></button>
<button class="next"></button>
</div>
            </div>
        </div>
    </xsl:template>

Я предполагаю, что он отвечает за правило обработки тега items. И внутри этого тега есть какие-то теги item. А в каждом теге item видимо содержится что-то. И еще снаружи есть тег item. И в нем тоже содержится что-то.

В связи с этим вопросы:
1. Какая логическая сущность содержится в item снаружи items?
2. Какая логическая сущность содержится в item внутри items?

Если нужная вам логическая сущность содержится в теге item, которая снаружи - то вам нужно будет переписать
<xsl:apply-templates select="document(concat('usel://carousel_main/', $result/result/page/@id))/udata" mode="carousel_specialisty" />

на
<xsl:apply-templates select="document(concat('usel://carousel_main/', ../@id))/udata" mode="carousel_specialisty" />

Если внутри - то нужно будет весь этот кусок переписывать.

Сдается мне, что вам вообще это не нужно и вы делаете дополнительный вызов usel://carousel_main/ имея ровно такой же результат во вложенных item. В этом нет проблемы, пока у вас на сайте нет пользователей. Как только нагрузка на сайт увеличиться - получите затык с производительностью.
Мой блог http://umicms.me

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Usel выборка и поле ссылка на дерево
« Ответ #84 : 21 Марта 2016, 17:08:58 »
У вас вроде пол кода нормально написано, а вторая половина - через ... . Джекил и Хайт какой-то.
Вот этот код за что отвечает?

Это вывод содержимого всплывающей плашки:
- Блок с "постоянными" ссылками;
- Вывод разделов, что внутри направлений;
- Вывод карусели со специалистами.

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

В связи с этим вопросы:
1. Какая логическая сущность содержится в item снаружи items?
2. Какая логическая сущность содержится в item внутри items?
На самом деле аж зависла...
Логическая сущность - это карусель?
Получается что второй вариант, если имеется ввиду вложение items -> item -> "какой-то блок", так?

Сдается мне, что вам вообще это не нужно и вы делаете дополнительный вызов usel://carousel_main/ имея ровно такой же результат во вложенных item. В этом нет проблемы, пока у вас на сайте нет пользователей. Как только нагрузка на сайт увеличиться - получите затык с производительностью.

Ну вообще нет, там немного другое "положение" полей, хотя думаю можно будет это упростить.

<xsl:apply-templates select="document(concat('usel://carousel_main/', ../@id))/udata" mode="carousel_specialisty" />

Хм.. а почему ../@id?
Но работает, выводит как положено О.о

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Usel выборка и поле ссылка на дерево
« Ответ #85 : 21 Марта 2016, 17:30:55 »
Карусель - это представление логической сущности. Логическая сущность - это, к примеру, специалист. Или направление.

../@id означает взять аттрибут id у элемента выше по иерархии. Учите xPath

Что такое "другое положение полей" мне непонятно. Может быть другой набор полей. Может быть другая сортировка. А что такое "положение" - это загадка
Мой блог http://umicms.me

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Usel выборка и поле ссылка на дерево
« Ответ #86 : 21 Марта 2016, 17:46:20 »
Карусель - это представление логической сущности. Логическая сущность - это, к примеру, специалист. Или направление.
По сути так и получается items -> item -> Специалисты

../@id означает взять аттрибут id у элемента выше по иерархии. Учите xPath
Ага. Нашла ^^

Что такое "другое положение полей" мне непонятно. Может быть другой набор полей. Может быть другая сортировка. А что такое "положение" - это загадка
Ну да, другой набор полей и сортировка другая ^^"

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Usel выборка и поле ссылка на дерево
« Ответ #87 : 21 Марта 2016, 21:04:59 »
В item видимо лежит то, что вы добавили в меню. Хотите что-то другое - добавьте другое
Мой блог http://umicms.me

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Usel выборка и поле ссылка на дерево
« Ответ #88 : 22 Марта 2016, 18:43:38 »
У меня такой вопрос.
Если мне надо проверять несколько разных типов данных, у них есть в наличие поле ссылка на дерево с именем link_timber
То usel получается будет такой?
<selection>
    <target result="pages">
        <!-- Т.е. тут получается логическое ИЛИ, так?-->
        <type id="148" />
        <type id="152" />
        <type id="105" />
    </target>
    <property name="link_timber">
        <page>{1}</page>
    </property>
    <extended>
        <properties>foto_glavnaya, zagalovok_glavnaya, text_glavnaya</properties>
    </extended>
</selection>
Мне надо сделать так, чтобы на главной странице выводились разных 4 блока, по желанию заказчика.
Если захотел вывести блок со Специалистом, выбирает у в специалисте ссылку на главную в Ссылка на Дерево.
И там каких-то три Направления, точно так же.

какой фокус они захотят еще...