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

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

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


Сообщения - Rodogor

Страницы: 1 ... 11 12 [13]
181
Шаблоны XSLT / Re:Изучаю UMI, XSLT.
« : 07 Июня 2012, 21:25:30 »
Проапгрейдил карусель, теперь к объекту каталога привязывается альбом и карусель с навигацией.
Может кому поможет, кто поиском забредёт:
Карусель http://slidesjs.com/


	<xsl:template match="udata" mode="object-view">
....................
<div id="products_example">
<div id="products">
<div class="slides_container">
<xsl:apply-templates select="document(concat('udata://photoalbum/album/(',.//group[@name='foto']/property/value/page/@link,')'))/udata/items" mode="foto"/>

</div>
<ul class="pagination">
<xsl:apply-templates select="document(concat('udata://photoalbum/album/(',.//group[@name='foto']/property/value/page/@link,')'))/udata/items" mode="foto_pagination"/>

</ul>
</div>
</xsl:template>



<xsl:template match="item" mode="foto">
<a href="#" target="_blank"><img src="{document(concat('upage://',./@id))/udata/page/properties/group[@name='photo_props']/property[@name='photo']/value}" width="570" /></a>
</xsl:template>

<xsl:template match="item" mode="foto_pagination">
<li><a href="#"><img src="{document(concat('upage://',./@id))/udata/page/properties/group[@name='photo_props']/property[@name='photo']/value}" width="55" /></a></li>
</xsl:template>

182
Шаблоны XSLT / Re:Изучаю UMI, XSLT.
« : 07 Июня 2012, 12:17:24 »
Я ещё не особо хорошо умею работать с переменными, походу самое время изучить.
Благодарю за совет.

Мой слайдер получился так:

<xsl:template match="udata" mode="object-view">
..........
<div id="slides">
<div class="slides_container">
<xsl:apply-templates select=".//group[@name='foto']/property/value" mode="foto"/>
</div>

</div>
</xsl:template>


<xsl:template match="value/page" mode="foto">

<img src="{document(concat('upage://',./@id))/udata/page/properties/group[@name='photo_props']/property[@name='photo']/value}" width="570" height="270"/>
</xsl:template>
Осталось решить вопрос с разрешением изображений и будет норм. :)

У меня ещё не сформировалось окончательно понимание XSLT и порой есть ощущение, что я пишу всякий бред.

У меня есть ощущение, что я неправильно применяю шаблоны, когда мне надо вывести более одного элемента, как в этом случае. Или всё же это правильно ? Изучая демо-шаблоны я натыкался на несколько способов.

   <xsl:apply-templates select=".//group[@name='foto']/property/value" mode="foto"/> - применить шаблон к части XML документа где такие proup/@name и т.п.
Далее нужно описать как обрабатывать.
<xsl:template match="value/page" mode="foto"> я написал value/page т.к. меня интересует только @id, которое в самом-самом конце дерева. Можно было написать value и пусть к @id указывать как ./page/@id...

183
Шаблоны XSLT / Re:Изучаю UMI, XSLT.
« : 06 Июня 2012, 17:44:21 »
Каталог, к нему прикреплён фотоальбом.  Мне нужно при просмотре объекта каталога вывести фото (jquery карусель). Получаю url таким способом

select="document(concat('upage://',./@id))/udata/page/properties/group[@name='photo_props']/property[@name='photo']/value/@path"/>


Есть плотное ощущение, что нужно копать в сторону %photoalbum photo()% и т.п., но в описании %photoalbum photo()%  сказано, что нужно использовать upage или udata... Т.е. обратиться localhost/udata/photoalbum/photo/14 нельзя. Хотя ответ есть, выглядит вот так:
Цитировать
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="photoalbum" method="photo" generation-time="0.015039">
<id>14</id>
<name>Toyota</name>
</udata>

184
Шаблоны XSLT / Re:Изучаю UMI, XSLT.
« : 05 Июня 2012, 09:30:47 »
Благодарю за ответ. Прошу прощения, действительно верно написано. Походу засиделся вчера.

Утро вечера мудренее.

Думаю, не мне одному понадобиться.. Что бы поиском люди нашли эти вопросы - накидаю теги:
как вывести ссылку на родительскую страницу

Собственно я сформировал так:
<a href="{document(concat('upage://',page/@parentId))/udata/page/@link}"  class="a_link"><xsl:value-of select="document(concat('upage://',page/@parentId))/udata/page/name"/></a>
Цели я добился, но не слишком ли извращённый способ ? Или это нормально ?

185
Шаблоны XSLT / Re:Изучаю UMI, XSLT.
« : 05 Июня 2012, 01:22:23 »
А не подскажите такой момент:
Структура каталога: Автомобили-Марка-Модель.
В "модель" нужно получить ссылку на "Марка".
Необходимо использовать Upage?
Я пока начал подбираться так -
<xsl:value-of select="document(concat('upage://',page/@parentId))"/>
Это я получаю родителя. У родителя
Цитировать
<page id="5" parentId="1" link="/avtomobili/toyota1/" is-active="1" object-id="317" type-id="71" type-guid="catalog-category" update-time="1338539083" alt-name="toyota1">
link="/avtomobili/toyota1/ это то что мне нужно. Как подобраться - не могу понять... Чисто интуитивно понимаю, что нужно полученный результат рассматривать как udata и оттуда вытянуть /page/@link.. Но что-то не выходит

186
Шаблоны XSLT / Re:Изучаю UMI, XSLT.
« : 03 Июня 2012, 12:31:13 »
Благодарю за столь быстрый ответ. С Вашей помощью мысли окончательно правильно сформировываются в нужное русло.

187
Шаблоны XSLT / Re:Изучаю UMI, XSLT.
« : 03 Июня 2012, 11:00:04 »
Спасибо за ответ.
Я написал пост сразу после полученного сообщения и видимо забыл нажать отправить. Сейчас зашёл и сильно удивился, что поста нет.
К моменту получения поста уже успел продвинуться и сделать некоторые успехи, а Ваш пост направил в нужное русло ещё больше.
Книгу я конечно скачал прежде чем начать ковыряться и прочитал не один раз, просто порой тяжело понять на имеющихся примерах как и что..

Сейчас вот ломаю голову с таким моментом:
На 1-ую страницу сайта нужно выводить один div, на остальные - другой.
На 1-ую страницу вывожу без проблем - <xsl:if test="result[page/@is-default='1']"> ......тырыпыры..... </xsl:if>
А как описать остальные страницы - понять не могу, т.к. у них отсутствует is-default. Можно ли как-то в XSLT проверять наличие параметров ?

Вообще правильный ли подход - использование внутри <xsl:template match="/" mode="layout"> конструкций xsl:if ? Мне что-то интуитивно кажется, что это не правильно - нужно описывать в отдельных файлах/шаблонах, для наглядности..
Есть ощущение, что это логичнее сделать через <xsl:call-template name="my_block" />

188
Шаблоны XSLT / Re:Изучаю UMI, XSLT.
« : 29 Мая 2012, 23:57:24 »
начните с простого, смените дизайн "охотниц за приведениями", поменяйте структуру, почитайте документацию.
а там глядишь и станет ясно как в шаблон вызвать функцию модуля, и как в нее передать параметры. ну и "столько раскопать" уже точно не надо будет.

Дизайн менять научился. Структуру менять тоже... Но это всё относительно.

Что касается "столько раскопать" - буду Вам благодарен, если сообщите нужное направление, а то я чувствую, что точно не туда копаю...

189
Шаблоны XSLT / Изучаю UMI, XSLT.
« : 29 Мая 2012, 21:28:27 »
Здравствуйте. Помогите пожалуйста разобраться с XSLT шаблонами.
Я в целом только изучаю систему и разбираюсь, поэтому могу сильно ошибаться. Пожалуйста, поправьте если что.
На примере одного конкретного макроса я пытаюсь понять как в целом взаимодействовать с системой.
Сейчас в голове такая картина:
Для добавлении функционала какого-либо из модулей, нужно найти его описания http://help-dev.umi-cms.ru/. Найти макрос, который реализует нужный функционал. Если макрос должен выводить информацию – пишем шаблон <xsl:template match="udata[@module = 'МОДУЛЬ'][@method = 'метод']">, затем пишем шаблон для элементов item данного макроса.  Если макрос связан с вводом инфы -  точно так же <xsl:template match="udata[@module = 'МОДУЛЬ'][@method = 'метод']">, в описание шаблона создаём <form> </form>. К примеру, <form name="frm_editblogmsg" method="post" action="/blogs20/postEdit/{$post/pid}/do/" onsubmit="site.forms.data.save(this); return site.forms.data.check(this);"> отправляет новый пост.
Проясните пожалуйста 1) откуда взялась инфа  action, что делает …/do (интуитивно тут понятно, с фигурными скобками тоже ясно) 2) onsubmit – интуитивно понятно, что сохранить формы сайта, но хочется более подробно вчитать про такие конструкции.

Поставил такую задачу: тестовый демо-сайт demodizzy. Нужно добавить возможность пользователям создавать СВОИ блоги и видеть в users/settings созданные блоги. Использовать XSLT шаблоны.


1)Изучив документацию, я пришёл к выводу, что за добавление своих блогов отвечает %blogs20 editUserBlogs()%.
Первый трабл - Я не могу понять, как вставить TPL шаблон в %blogs20 editUserBlogs()% XSLT.
Выполняю в адресной строке udata/blogs20/editUserBlogs – получаю XML, где вижу список имеющихся блогов(скрин не делаю, ничего необычного). Выполняю blogs20/editUserBlogs – получаю Debug message for UC-pages http://my.jetscreenshot.com/12061/20120529-xx4u-80kb.jpg. Это говорит о том, что в шаблоне не описано как обрабатывать вызов этого модуля и метода. Добавляю в файл Default.xsl
<xsl:template match="result[@module = 'blogs20'][@method='editUserBlogs']" >
<xsl:apply-templates select="document('udata://blogs20/editUserBlogs')" />
   </xsl:template>
Теперь я получаю XML в теле сайта.  http://my.jetscreenshot.com/12061/20120529-hmme-114kb.jpg
Имеющийся вопросы: 1)Почему он не преобразовывается в HTML ?
Попытка ответа: Потому что нет описания для этого, необходимо добавить обрабатывание этой раздачи, т.е. шаблонизатор для module="blogs20" method="editUserBlogs", должен быть шаблон.
disable-output-escaping="yes"  тут не причём, это экранирование тегов, если уже готовый HTML выдаётся.
Я правильно понял ?
2) Смотрю как организован просмотр блогов. Предположим, я хочу добавить новое поле для блога. Добавляю поле, тип число. Просматриваю через сайт– его нет. Дописываю к адресу поста блога .xml – вижу, что новое поле таки формируется XML документом. http://my.jetscreenshot.com/12061/20120529-avhz-114kb.jpg
В голове появляется тень мыслей 1) выводятся только конкретные статичные поля 2) нужно ковырять как и где выводятся
Начинаю смотреть по коду, как организовывается вывод поста блога.  Нахожу такую строчку –
   <xsl:value-of select="document(concat('udata://blogs20/postView/',$document-page-id))/udata/content" disable-output-escaping="yes" />
concat('udata://blogs20/postView/',$document-page-id) это грубо говоря udata://blogs20/postView/95/ если 95 ID поста блога, а что возвращает в этом случае всё выражение с дописанном в конце document(…udata/content) ?
Ткните пожалуйста в читалку, это реальный пробел в моих знаниях, а голова уже кругом.
Анализируем дальше… udata://blogs20/postView возвращает пост без нового поля, которое я сам создал.  http://my.jetscreenshot.com/12061/20120529-coat-105kb.jpg
Вопрос: Как сделать так, что бы возвращались все поля ?
Я попробовал искать, где же уже есть подобный механизм… Нашёл в emarket/personal/ в персональной информации.. Смотрю код -  ссылается на users/settings: <xsl:apply-templates select="document('udata://user/settings')" />. Нахожу код этого фрагмента:
<xsl:template match="udata[@method = 'settings']">
<form enctype="multipart/form-data" method="post" action="{$lang-prefix}/users/settings_do/" id="con_tab_profile">
         <div>
            <label>
               <span>
                  <xsl:text>&login;: </xsl:text>
               </span>
               <input type="text" name="login" class="textinputs" disabled="disabled" value="{$user-info//property[@name = 'login']/value}" />
            </label>
         </div>
…… убеждаемся, что тут всё прописано статично – вот логин вывелся, &login;, что бы на разных языках подмена была… дальше статинчные поля… а вот поле расширенная информация – не статично, т.е. добавив в типе данных новое поле – оно тут появляется.
<xsl:apply-templates select="document(concat('udata://data/getEditForm/', $user-id))" />
В data/common-edit-form.xsl находим <xsl:template match="udata[@method = 'getCreateForm' or @method = 'getEditForm']"> и смотрим каким образом выводятся эти поля, которые мы добавляем сами. В файле data/properties.xsl понимаем, что там просто вычисляются значения этих полей и выводятся. <xsl:template match="property|fields/field//value">
      <xsl:value-of select="value" />
   </xsl:template>

Неужели для того, что бы автоматом выводить новые поля блога, придётся столько раскопать и сделать ? Пусть в стоящей предомной задаче это и не нужно, но в целях углублённой экскурсии в UMI CMS лишним не будет..


Страницы: 1 ... 11 12 [13]