Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
подсчет количества объектов каталога в разделе с учетом фильтра

Автор fantom103Раздел Шаблоны TPL

Ответов: 6
Просмотров: 7583
Последний ответ 02 Октября 2014, 14:14:39
от fantom103
Скрыть ненужные позиции фильтра каталога (выпадающий список)

Автор smartwebРаздел Макросы UMI.CMS

Ответов: 1
Просмотров: 1797
Последний ответ 17 Ноября 2016, 23:45:58
от aghigay
Вывод фильтра в разделах каталога второго уровня.

Автор s.kirillРаздел Макросы UMI.CMS

Ответов: 11
Просмотров: 5867
Последний ответ 19 Января 2017, 09:48:55
от e.ioffe
Вывод одного фильтра на всех страницах?

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

Ответов: 7
Просмотров: 3542
Последний ответ 14 Мая 2014, 12:24:32
от admin
Вывод фильтра в главном шаблоне

Автор WenLeksРаздел Настройка системы и модулей

Ответов: 27
Просмотров: 7873
Последний ответ 21 Июля 2014, 16:57:34
от WenLeks

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

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Реализация фильтра
« Ответ #15 : 02 Марта 2016, 21:37:24 »
Зашибись...  :o
Мне сказали, что в пятницу утром фильтр должен быть  :-[ :(

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Реализация фильтра
« Ответ #16 : 03 Марта 2016, 12:47:05 »
Нашла вот такую странную статью, но не могу понять как она работает, и что реально из нее мне надо Как сделать выборку по нескольким типам данных

В этой статье говорится про selector. нашла в полезных ссылках вот эту статью http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/proizvolnye_vyborki/selector/

Но вот читаю и не могу понять, а где пишутся эти селекторы?
И как поняла тут все равно все завязано на модуле каталога?

Просто вроде нашла статьи по фильтрам каталогов, но как их модифицировать под мою задачу не понимаю Т___Т

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Реализация фильтра
« Ответ #17 : 03 Марта 2016, 14:34:40 »
Я нашла кучу запросов как вывести справочник, и ни одного как сделать связь/проверку для фильтра Т__Т

Изменила кстати запрос для справочника.
Теперь код для страницы выглядит так, в комментариях вопросы есть Т_Т
 
<xsl:template match="result[page/@id = '272']">
<ul class="directions">
<xsl:apply-templates select="document(concat('usel://guide/',152,'/name'))/udata/item" mode="guide.list"/>
</ul>
<div class="specialize">
<h3>Администрация</h3> <!-- по сути заголовок должен брать из выбранной в списке специализации -->
</div>
<div class="specialists">
<ul>
<xsl:apply-templates select="document('usel://main/272/148')/udata" mode="human"/>
</ul>
</div>
</xsl:template>

<xsl:template match="udata" mode="human">
<xsl:apply-templates select="page" mode="human"/>
</xsl:template>

<xsl:template match="page" mode="human">
<li class="specialists_item">
<a href="{@link}">
<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>
<p><xsl:value-of select="extended/properties/property[@name = 'dolzhnost']/value" disable-output-escaping="yes"/></p>
<xsl:value-of select="extended/properties/property[@name='otdelenie']/value/item" />
<!-- и вот вывод списка отделений так и не работает, почему? -->
</span>
</a>
</li>
</xsl:template>

<xsl:template match="udata/item"  mode="guide.list">
<xsl:param name="guide-list-name" select="@name" />
<li>
<xsl:value-of select="$guide-list-name" />
</li>
</xsl:template>

Вот .xml одного специалиста и там видно, что поле с отделениями подтягивается:
<group id="411" name="specialisty">
<title>Специалисты</title>
<property id="512" name="dolzhnost" type="text" is-important="0">
<title>Должность</title>
<value>Профессор, руководитель центра</value>
</property>
<property id="519" name="specialzaciya" type="relation" multiple="multiple" is-important="0">
<title>Специализация</title>
<value><!-- Вот список специализаций у специалиста-- >
<item id="1314" name="Тест1" type-id="152" update-time="1456911122" ownerId="59" xlink:href="uobject://1314"/>
<item id="1343" name="Тест2" type-id="152" update-time="1456911260" ownerId="59" xlink:href="uobject://1343"/>
<item id="1344" name="Тест3" type-id="152" update-time="1456911865" ownerId="59" xlink:href="uobject://1344"/>
<item id="1363" name="Тест4" type-id="152" update-time="1456914369" ownerId="59" xlink:href="uobject://1363"/>
</value>
</property>
<property id="521" name="familiya" type="string" is-important="0">
<title>Фамилия</title>
<value>Вторая</value>
</property>
<property id="522" name="imya_otchestvo" type="string" is-important="0">
<title>Имя Отчество</title>
<value>Имя Первое</value>
</property>
</group>

А для работы с селекторами надо знать php? ((
« Последнее редактирование: 03 Марта 2016, 14:38:20 от Sumrakrnd »

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Реализация фильтра
« Ответ #18 : 03 Марта 2016, 17:36:31 »
Так.... Эпопея продолжается.
у меня есть xml грубо говоря который берет по id специалистов

<?xml version="1.0" encoding="utf-8"?>
<selection>
    <target result="pages" expected-result="count">
        <type id="148" />
        <category depth="2">{1}</category>
    </target>
    <limit page="0">{limit}</limit>
    <extended>
        <groups>specialisty</groups>
        <properties>content, tags, h1, content, header_pic, menu_pic_a, photo, descr, vidimoepole, skrytoepole, zanayutiya, uslugi, priceuslug, familiya, imya_otchestvo, dolzhnost, fotografiya, otdelenie</properties>
    </extended>
</selection>

Есть xml который по сути должен подтягивать специализации.
<?xml version="1.0" encoding="utf-8"?>

<selection>
    <target result="pages" expected-result="count">
        <type id="152" />
        <category depth="2">{1}</category>
    </target>
    <limit page="0">{limit}</limit>
</selection>



И вот есть что типа вызывается на страницу
	<xsl:template match="result[page/@type-id = '146']">
<ul class="directions">
<li class="filter" data-filter=".mix">Все работы</li>
<xsl:apply-templates select="document('usel://razdely/273')/udata" mode="razdel"/>
</ul>

<div class="specialists">
123<xsl:apply-templates select="document(concat('usel://portfolio/',@id))/udata" mode="portfolio_list"/>
</div>
</xsl:template>

<xsl:template match="udata" mode="portfolio_list">
<xsl:apply-templates select="page" mode="portfolio_list"/>
</xsl:template>

<xsl:template match="page" mode="portfolio_list">
<xsl:variable name="tag-alt">
<xsl:apply-templates select="extended/groups/group/property[@name='napravlenie']/value/page" mode="tags-alt"/>
</xsl:variable>
<div class="mix {$tag-alt}">123
<div class="specialists" data-link="{@link}" data-id="{@id}">
<h6>123
<xsl:value-of select="name"/>
</h6>
<hr/>
<xsl:apply-templates select="extended/groups/group/property[@name='napravlenie']/value/page" mode="tags-name"/>
                <div class="portfolio_over_link">
                 123   <xsl:variable name="link" select="extended/groups/group/property[@name='ssylka_na_sajt']/value"/>
                    <xsl:if test="$link">
                        <a href="{$link}" class="attach" target="_blank"></a>
                    </xsl:if>
                    <p class="js_link_portfolio link" data-link="{@link}"></p>
                </div>
</div>
</div>
</xsl:template>

<xsl:template match="page" mode="tags-alt">
<xsl:value-of select="@alt-name"/><xsl:text> </xsl:text>
</xsl:template>

<xsl:template match="page" mode="tags-name">
<p>
<span class="filter" data-filter=".{@alt-name}">
<xsl:value-of select="name"/>
</span>
</p>
</xsl:template>

<xsl:template match="udata" mode="razdel">
<xsl:apply-templates select="page" mode="razdel"/>
</xsl:template>

<xsl:template match="page" mode="razdel">
<li class="filter" data-filter=".{@alt-name}">
<xsl:value-of select="name"/>
</li>
</xsl:template>



Итог, специализации подтягиваются, а вот из всех тестовых 123 подтягивается только первый, что идет в самом начале (((((
И специалисты соответственно не выводятся....

Еще я подключила поле Ссылка на дерево
(кстати, можно тип данных переместить и сделать деревом другого типа данных когда он уже соединен )

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Реализация фильтра
« Ответ #19 : 05 Марта 2016, 23:47:20 »
Вот такой фильтр у меня получился на основе mixitup.
направления тип данных 152, у основания структуры тип данных 151:
151
--152
--152
151
--152
--152
151
--152
151
--152

Сейчас у меня для фильтра подтягиваются все направления которые есть, т.е. все названия с типом данных 152.
Как сделать, чтобы подтягивались направления из конкретного начала, т.е. из конкретного 151, допустим первого. И не подтягивал из последних трех?

 	<xsl:template match="result[page/@type-id = '146']">
<div class="controls">
<ul class="directions">
<li class="filter" data-filter=".mix">Все направление</li>
<xsl:apply-templates select="document('usel://razdely/273')/udata" mode="razdel"/> <!-- здесь подтягивается направления, все названия с типом данных 152 -->
</ul>
</div>
<div class="specialists" id="container">
<ul class="specialists_item">
<xsl:apply-templates select="document('usel://main/272/148')/udata" mode="portfolio_list"/>
</ul>
<div style="clear: both;"></div>
</div>
</xsl:template>

  <xsl:template match="udata" mode="portfolio_list">
        <xsl:apply-templates select="page" mode="portfolio_list"/>
    </xsl:template>

    <xsl:template match="page" mode="portfolio_list">
<h3><xsl:value-of select="name"/></h3> <!-- Как правильно написать обращение к имени, по которому фильтруется специалисты? -->
<xsl:variable name="tag-alt">
<xsl:apply-templates select="extended/groups/group/property[@name='napravlenie']/value/page" mode="tags-alt"/>
</xsl:variable>
<li class="mix {$tag-alt}">
<xsl:attribute name="class">
<xsl:value-of select="extended/properties/property[@name = 'css_class']/value" />
</xsl:attribute>
<xsl:apply-templates select="extended/groups/group/property[@name='napravlenie']/value/page" mode="tags-name"/>
<span class="text">
<a href="{@link}"><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></a>
<p><xsl:value-of select="extended/properties/property[@name = 'dolzhnost']/value" disable-output-escaping="yes"/></p>
</span>
<div class="block-link">
<span><a href="#win1" class="apply">записаться</a></span>
<span><a href="#win3" class="reviews">Отзывы</a></span>
</div>
</li>
    </xsl:template>

<xsl:template match="page" mode="tags-alt">
<xsl:value-of select="@alt-name"/><xsl:text> </xsl:text>
</xsl:template>

<xsl:template match="page" mode="tags-name">
<p>
<span class="filter" data-filter=".{@alt-name}">
<xsl:value-of select="name"/>
</span>
</p>
</xsl:template>

<xsl:template match="udata" mode="razdel">
<xsl:apply-templates select="page" mode="razdel"/>
</xsl:template>

<xsl:template match="page" mode="razdel">
<li class="filter" data-filter=".{@alt-name}">
<xsl:value-of select="name"/>
</li>
</xsl:template>

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

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Реализация фильтра
« Ответ #20 : 06 Марта 2016, 12:42:50 »
Исходя из изначального задания - вы упорно идете не в ту сторону и думаете не в том направлении. Рекомендую вам сначала сформировать архитектуру, а уже затем решать в какой структуре данных вы будете хранить информацию и как выводить. Сейчас, как я вижу, архитектура отсутствует.
Мой блог http://umicms.me

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Реализация фильтра
« Ответ #21 : 06 Марта 2016, 13:54:08 »
хм... изначальное задание я уже сделала, у меня работает фильтр грубо говоря на основе сравнения адреса направления и название класса внесенного в поле специалиста в основе идет плагин.
Через xml идет выборка всех направлений по типу данных.
Вроде все просто, не так ли?

Просто в изначальной структуре сайта ТАКОГО фильтра не было. Просто так захотел заказчик.

Что вам не понятно в архитектуре?
У все направления разбиваются на категории, в админке выглядит:
-Категория
--Направление
--Направление
--Направление
-Категория
--Направление
--Направление
--Направление
-Категория
--Направление
--Направление
--Направление
-Категория
--Направление
--Направление
--Направление

Вроде очень простая структура. Категория имеет свой тип данных 151, у направления свой - 152.
(надеюсь не проблема в том, что я не использую названия специалист и специализация как в начале вопроса?)
Может условия отбора из определенной категории я бы и сама сделала, но я не знаю что именно искать.
Как задать вопрос, чтобы найти нужную статью.
А то как с формами, искала информацию по фильтрам, нашла информацию по формам... зашибись, да?

По коду что я скинула:
В начале идет вывод через usel всех направлений, которые уже забиты в umi и имеют тип данных 152.
на эту же страницу вызываются специалисты, у которых тип данных 148.

Грубо говоря идет проверка направления, которое указано в поле у специалиста, в поле специалиста вписывается цепочка выбранных направлений, которые как класс добавляются к li и идет проверка совпадений названий (просто не знаю как вам описать это по другому), тут работает такой плагин как mixitup.

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

P.S.: или мне сюда и xml и код нужно скинуть, чтобы было видно все и сразу?
P.P.S.: кстати, все так советуют наставника, а вот смотрю что как-то сам никто не рвется им быть.
« Последнее редактирование: 06 Марта 2016, 13:57:39 от Sumrakrnd »

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Реализация фильтра
« Ответ #22 : 06 Марта 2016, 14:14:00 »
Тут не фантастика в вопросе - тут каша :-)

То, как хранятся данные - это не архитектура. Это - формат хранения данных. Вы взялись за это не зная как будете делать выборки, какие методы применять и как отдавать пользователю. Отсюда и проблема: сейчас, видимо не зная как работает какой-то там плагин и как все это соединить воедино, вы пытаетесь найти палочку-выручалочку в виде волшебной статьи, где все это будет объяснено. Так вот такой статьи нет. И нет её потому, что так никто не делает.

Как делают обычно:
1. идут от интерфейса. Бывает так, что у вас есть готовая верстка и её нужно подогнать под некоторую логику работы. Например, на верстке есть сразу фильтры, которые в динамике что-то фильтруют. Например вот так: http://familydom.pro/projects/
Тут явно есть какая-то довеска в виде JS-кода, которая по клику что-то прячет, а что-то показывает.
2. идут от архитектуры. Бывает так, что у вас нет ничего и все нужно придумывать. Тогда сначала придумывают КАК это будет работать, например: по нажатию определенной ссылки (пока не говорим где она, как будет выглядеть и что будет в ней) страница будет перезагружаться и на ней будут оставаться только значения по фильтрам. Например как тут: http://all-4dance.ru/katalog/odezhda/topy/

У вас подход идти по кусочкам. Но в таком варианте этот подход не особо работает, так как не понимая общей картины вы в каждом конкретном моменте выбираете решения, которые в итоге, в лучшем случае, противоречат друг другу.

Резюмируя, хочу задать единственный вопрос:
как это должно работать?

Ответ должен быть коротким, в нем не должно быть воды, должно быть все важное. И еще, ответ - это фактически решение, так что сформулировав его вы поймете как нужно делать вашу задачу.

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

PS: никто вроде и не должен рваться стать вашим наставником. Это типа нужно вам, а не нам. Так приложите усилия для этого. Ну или вам это не нужно - тогда результат будет очевидным :-)
Мой блог http://umicms.me

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Реализация фильтра
« Ответ #23 : 06 Марта 2016, 14:30:30 »
Вообще-то фильтр работает -.-"
Мне надо чтобы не весь список направлений выводился, а например из первой категории

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Реализация фильтра
« Ответ #24 : 06 Марта 2016, 14:32:13 »
И мой фильтр работает без перегрузки страницы

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Мой блог http://umicms.me

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
Re: Реализация фильтра
« Ответ #26 : 06 Марта 2016, 17:40:43 »
aghigay "человек из стали")

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Реализация фильтра
« Ответ #27 : 06 Марта 2016, 19:10:42 »
Уиии! Идеально ^^
Спасибо, aghigay =)

Я читала эту статью, но почему-то не соотнесла это с решением моей проблемой >.<

crazygeorgio не знаю как из стали, но почему он решил, что мой фильтр не работает я не знаю, ведь написала: что фильтр у меня получился, хоть и с помощью плагина @_@

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Реализация фильтра
« Ответ #28 : 06 Марта 2016, 19:23:50 »
Sumrakrnd, как я и сказал изначально правильно заданный вопрос - это 50% залога успешного решения!

crazygeorgio, спасибо :-)
Мой блог http://umicms.me