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

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

Ответов: 6
Просмотров: 4707
Последний ответ 18 Октября 2014, 17:39:24
от idu.kuru
Сортировка по алфавиту в xslt

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

Ответов: 2
Просмотров: 4201
Последний ответ 14 Января 2012, 17:25:36
от admin
Не выводятся все теги в xslt

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

Ответов: 2
Просмотров: 3822
Последний ответ 03 Июня 2014, 13:52:04
от goodprofy
webforms & XSLT & модальное окно

Автор graveРаздел JS и AJAX

Ответов: 8
Просмотров: 8539
Последний ответ 13 Июня 2011, 00:41:56
от talanter
Как вывести itemprop="position" content="" в XSLT?

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

Ответов: 0
Просмотров: 1532
Последний ответ 15 Ноября 2018, 09:30:06
от makarov2979

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

*

alex

  • **
  • 59
  • +0/-0
    • Просмотр профиля
    • Сергеев Александр Сергеевич
Меню JS+AJAX и все это на XSLT
« : 21 Апреля 2011, 08:16:28 »
Создал тему в этом разделе, т.к. прежде всего тут будет AJAX, однако как реализовать вывод в xslt в моем случае я не знаю.
Итак..XSLT шаблонизатор.

Есть три справочника. Страны, города, улицы.
Сначала выводим страны из справочника стран - это смог,
<xsl:template match="udata/item"  mode="guide.list">
      <xsl:param name="guide-list-id" select="@id" />
       <xsl:param name="guide-list-name" select="@name" />
       <a href="result_page?id={$guide-list-id}">object_name=<xsl:value-of select="$guide-list-name"/></a><br/>
</xsl:template>
но не смог каждой ссылке уник.ИД дать при выводе.

Далее после клика по стране, подгружаем ее города (их ниже выводим в какомнибудь div'e).
И снова после выбора уже города, заменяем список городов списком улиц уже из третьего справочника.

Впринципе, будь это все на php с выборкой из базы, я бы справился (просто уникальный $id ссылкам, вывод, ajax ) сделал бы...но тут, ПРОШУ ПОМОЩИ!
« Последнее редактирование: 01 Мая 2011, 01:25:27 от alex »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Меню JS+AJAX и все это на XSLT
« Ответ #1 : 21 Апреля 2011, 17:32:59 »
подгружаемые списки... это интересная задача,

Несколько вопросов, от которых зависит способ реализации

у вас есть спискок стран, спискок городов (это один список со всеми городами всех стран или это отдельные списки ,в которых каждый список относиться только к одной стране),  тот же вопрос про улицы

списки находяться на одной странице? подгружаются  динамически?(то есть выбрал я страну подгрузились города)

я так понимаю есть объекты в системе (назовем их домами), которые имеют определенное значение города, страны и улицы и после этих списком мы увидим все объекты соответсвующие данному выбору, так?

если где-то ошибка опишите подробнее, как будет происходить механизм взаимодействия пользователя и этих списков, если есть скриншот, только в плюс

*

alex

  • **
  • 59
  • +0/-0
    • Просмотр профиля
    • Сергеев Александр Сергеевич
Re:Меню JS+AJAX и все это на XSLT
« Ответ #2 : 21 Апреля 2011, 22:28:34 »
ДА! Вы все правильно написали. самый сложный вариант походу.

Есть пост блога, при добавлении выбирается три обязательных параметра: страна, город и улицы.
Для каждой страны свои города, для города каждого свои улицы.

На странице отображается список стран. При клике подгружается и отображается список городов (элементов справочника). При клике по городу подгружается список улиц (ну города скроются средствами jquery).

И, наконец, при клике по улице отображается кокретных пост (пускай про улицу описание или типа того), параметры которого совпадают с выбранными.

Еще раз повторюсь, что списки - просто элементы справочников, и еще в налиции посты с параметрами.


P.S. думал сегодня пару часов, но моих знаний о xslt явно не хватает (((

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Меню JS+AJAX и все это на XSLT
« Ответ #3 : 21 Апреля 2011, 23:02:02 »
Цитировать
Для каждой страны свои города, для города каждого свои улицы.
вот тут я не совсем понял, все таки справочник с городами в системе один или их много и если много как вы их в админке размещаете?

Вообще делаете проще, у каждого блога есть 3 справочника, страна, город и улица.
При создании поста выбираете из имеющихся нужную страну, город и улицу (если таковых нет добавляете в список). Это все админская часть

Дальше, на сайте выводите форму со странами, при выборе какойто страны, вызываете ajax функцию выборки usel что то типа "выбрать все посты у которых такая же страна и вывести их списком отсортировав по названию города", этот вызов будет выглядеть примерно так, в параметр url ajax запроса прописываете usel запрос типа http://ваш_сайт/usel/Ваш_файл_выборки.json , результаты обрабатываете js и получаете справочник городов, потом такой же финт ушами с улицами

примечание:
1. почитать про json результат макросов можете тут http://wiki.umisoft.ru/%D0%9A%D0%B0%D0%BA_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%82%D1%8C_%D1%81_AJAX
2. Так как содержимое справочников будет формироваться динамически, а события на выбор (например города) вы будете прописывать сразу, то стоит учесть что jQuery обработчик выбора элемента списка, которого еще нет можно сделать при помощи функции jQuery.live посмотрите в интернете

ну и когда пользователь выбирает улицу ajax запрос подгружает все посты которые попадают под выбранные страна, город, улица и опять же js выводяться результаты.

Это если без перезагрузки делать.

Это механизм я опробовал сам, были варианты делать прямые обращения к базе, что повысило бы скорость обработки ajax запросов, но выигрыш в скорости не намного и для меня sql всегда головная боль)

советую для начала отписать просто страничку с голым html, то есть подключить к какой-нибудь тестовой странице тестовый tpl шаблон, в нем сделать рабочий механизм, а потом перенести его на xslt , чтобы было проще отслеживать откуда ноги растут, если что не так пойдет
« Последнее редактирование: 21 Апреля 2011, 23:04:45 от admin »

*

alex

  • **
  • 59
  • +0/-0
    • Просмотр профиля
    • Сергеев Александр Сергеевич
Re:Меню JS+AJAX и все это на XSLT
« Ответ #4 : 26 Апреля 2011, 22:05:11 »
Цитировать
выборки usel что то типа "выбрать все посты у которых такая же страна и вывести их списком отсортировав по названию города"
С json разобрался маленько, только вот нигде не нашел как в формате usel'ов делать фильтры всякие (посты соответствующие запросу), или в самом запросы <xsl:/> тоже не нашел.
Есть какой-нибудь пример?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Меню JS+AJAX и все это на XSLT
« Ответ #5 : 26 Апреля 2011, 22:19:46 »
usel выборки немного задел тут   %data doSelection()% и как передать ему параметр из адресной строки в частности пример xml файлы для выборки можете там посмотреть

а вообще описание usel ищи тут http://help-dev.umi-cms.ru/chapter.XSLTTemplates.usel.html

если будет совсем непонятно пиши подскажу

*

alex

  • **
  • 59
  • +0/-0
    • Просмотр профиля
    • Сергеев Александр Сергеевич
Re:Меню JS+AJAX и все это на XSLT
« Ответ #6 : 27 Апреля 2011, 16:13:11 »
Хм..посмотрел...у меня XML есть, по выборке списка справочника...я понял как туда парамерт передается {1} например...и понял что сделать...только напортачил небось,т.к. не работает...

запрос:
<xsl:apply-templates select="document(concat('usel://guide/',123))/udata/item"  mode="guide.list"/>
usel:
<?xml version="1.0" encoding="utf-8"?>
<selection>
    <target result="objects">
        <property name="gruppa" value="Легковые автомобили"/>
        <type id="{1}" />
    </target>
</selection>
Выбирает все,а надо только один пост (где я выбрал легковые)

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Меню JS+AJAX и все это на XSLT
« Ответ #7 : 27 Апреля 2011, 16:20:51 »
частая проблема

1. тег property располагается ниже тега target
2. так как поле gruppa у вас скорее всего выпадающий список, надо использовать немного другую форму записи для тега property (в документации описанно http://help-dev.umi-cms.ru/chapter.XSLTTemplates.usel.html)

то есть примерно так он должен выглядеть

<?xml version="1.0" encoding="utf-8"?>
<selection>
    <target result="objects">
        <type id="{1}" />
    </target>
   <property name="gruppa">
       <object>26564</object>
   </property>
</selection>

где 26564 это id элемента справочника "Легковые автомобили"

*

alex

  • **
  • 59
  • +0/-0
    • Просмотр профиля
    • Сергеев Александр Сергеевич
Не хочу новую тему создавать...
« Ответ #8 : 27 Апреля 2011, 17:45:56 »
Вобщем я разобрался с шаблонами данных,но не до конца.
Кстати поражаюсь удобности ЮМИ.
Есть пост, есть шаблон, и при добалении поста в блог у меня те поля выводятся к заполнению, которые в шаблоне...
НО! как сделать, чтобы при добавлении постов в разные разделы (или блоги, всеравно, главное в разные), был и разный шаблон?
И как еще это к пользователям подвязать? Привилегии вроде где какой пользователь может что добавлять?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Меню JS+AJAX и все это на XSLT
« Ответ #9 : 27 Апреля 2011, 17:50:49 »
сделать проверку в самом главном template на то в каком разделе находиться данный пост и подгружать разные шаблоны

*

alex

  • **
  • 59
  • +0/-0
    • Просмотр профиля
    • Сергеев Александр Сергеевич
Re:Меню JS+AJAX и все это на XSLT
« Ответ #10 : 27 Апреля 2011, 17:58:03 »
не понял...мне нужно в админке чтобы для разных разделов(блогов) разные шаблоны добавления были

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Меню JS+AJAX и все это на XSLT
« Ответ #11 : 27 Апреля 2011, 18:02:34 »
а, то есть разные поля? тогда создаешь подтипы в шаблоне данных и добавляешь то что тебе надо, а при создании поста у тебя появиться выбор к какому типу данных их относить, там и будешь выбирать к каждой странице

*

alex

  • **
  • 59
  • +0/-0
    • Просмотр профиля
    • Сергеев Александр Сергеевич
Re:Меню JS+AJAX и все это на XSLT
« Ответ #12 : 27 Апреля 2011, 19:12:53 »
А подробнее можно про подтипы?

И вот основное:
покопался в инете (http://xmlhack.ru/books/xslt/ch_11_05.html#ch_11_05_01)
и нашел циклы для xslt

НО НЕ ЗНАЮ КАК ОБРАЩАТЬСЯ!!!

это код самого скрипта, насколько я понял:
<xsl:template name="while">
  <xsl:param name="i"/>
  <xsl:param name="result"/>
  <xsl:choose>
    <xsl:when test="$i != 0">
      <xsl:call-template name="while">
        <xsl:with-param name="i" select="$i - 1"/>
        <xsl:with-param name="result" select="$result * $i"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$result"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

это шаблон вывода результата скрипта:
<xsl:template match="/" mode="guide.while">
  <xsl:call-template name="while">
    <xsl:with-param name="i" select="6"/>
    <xsl:with-param name="result" select="1"/>
  </xsl:call-template>
  <xsl:value-of select="$result"/>
</xsl:template>
P.S. mode="guide.while" прописал сам,по аналогии со справочником..

НО!! как к нему обратиться из другого места страницы???

например мы делали так для справочника:
<xsl:apply-templates select="document('usel://guide/45/508')/udata/item"  mode="guide.list"/>

тут тоже апли темплэйтс будет, но как именно писать их для моего случая? подскажи, я по аналогии уже разберусь и дальше.
« Последнее редактирование: 27 Апреля 2011, 19:14:49 от alex »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Меню JS+AJAX и все это на XSLT
« Ответ #13 : 27 Апреля 2011, 19:16:44 »
далеко не самый лучший способ, такая структура в чыде это перенос работы php в чыде, много ресурсов съест, чего в результате хочешь добиться? что у тебя есть и что тебе надо получитьт при помощи этого цикла?

*

alex

  • **
  • 59
  • +0/-0
    • Просмотр профиля
    • Сергеев Александр Сергеевич
Re:Меню JS+AJAX и все это на XSLT
« Ответ #14 : 27 Апреля 2011, 19:25:00 »
Да чтоюы ссылки уник.id задать....но...Пока писал это сообщение в голову пришла мысль по поводу того,как отличать ссылки (для JS), чтобы по ним ajax делал выборку...но стопорнулся и сейчас вообще туплю сижу....

Мне нужно чтобы вывелся список стран ( :D) и JS при клике через ajax подгрузил какойнибудь определенный usel (ну json)..чтото пока никак