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

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

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


Сообщения - 31rus

Страницы: 1 [2] 3 4
16
Рекомендую посмотреть в сторону Выборки из БД: протокол USel и построить  usel://getOriginPage/?pagePath=/foo/bar/&group=slider или usel://getOriginPage/(/foo/bar/)/slider/ это пример использования, еще надо сам запрос построить см. доку.

А какой смысл делать выборку usel ради одной страницы?
Upage должен решить мою задачу, вопрос почему он не хочет отрабатывать корректно?

17
Цитировать
У меня не срабатывает(

Буду ковырять дальше

так а куда вы вставляете, в какую ноду, какой доступ к переменным, естественно document(concat('upage://(', substring-after(result/page/@link, result/@pre-lang) ,')'))//group[@name='slider'] достаточно образный запрос, если нет доступа к result/page/@link result/@pre-lang, то их можно задать как переменные или параметры в корневом шаблоне

естественно если мы в языковой версии по-умолчанию, то там это не сработает, так что можно использовать xsl:choose c проверкой на result/@pre-lang


Вызываю с основного шаблона layouts/default.xsl, построен на основе demodizzy. вызываю из дополнительного языка, не основного.

Решил получить ID страницы из основного языка <xsl:value-of select="document(concat('upage://(',substring-after(result/page/@link, result/@pre-lang),')'))/result/@pageId"/>
В выводе отсутсвует ID

<xsl:value-of select="document(concat('upage://(', substring-after(result/page/@link, result/@pre-lang) ,')'))//property[@name ='slider-foto1']/value != ''"> выводит данные из текущего языка
substring-after(result/page/@link, result/@pre-lang) вывод правльный URl
Все переменные lang и pre-lang присутствуют в выдаче xml

18
У меня не срабатывает(

Буду ковырять дальше

19
Проще воспользоваться макросом banners insert() с bList = true (http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/bannery/banners_insert/#content), Этот параметр позволяет вывести все баннеры, назначенные на указанное баннерное место. Только для XSLT-шаблонизатора.

document('udata://banners/insert/(место вывода банера)/0/true')/udata


Наверное не актуально уже, но другим пригодиться. Я сам не сразу обратил на него внимание, писал кастовым, переписывал вывод шаблонов, но потом наткнулся и понял что так проще. самое интересное что в demodizzy на xslt такая функция отсутствует, хотя в php umi выводит слайдер из одного места.

И как следствие все смотрят на макрос fastinsert а у него опция bList отсутствует.

20
Есть несколько языковых версий, в каждой одинаковая структура с идентичными url страницами

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

Протокол Upage позволяет получить по id и пути, но посколько url идентичны, то выводится данные из текущего языка.
Как без кастом макросов решить данную проблему?

Например
http://wbhcambodia.com/ru/our-rooms/
Имеется Grop[@name='slider'], что бы не вставлять в другие языки заново фото, вывести данную группу из основного языка

21
да, итоговый скрипт должен выглядеть так.

jQuery('li a.quick-view').click(function() {
      var id = $(this).attr("href");
      jQuery.ajax({
         url: "/upage//" + id + "/?transform=modules/catalog/quick-view.xsl",
         dataType: 'html',
            type: "get",
         success: function (data) {
            site.message({
               id: 'quick_view_' + id,
               header: 'Быстрый просмотр',
               width: 400,
               content: data,
               async: false
            });

         }
      });
      return false;
   });

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

23
В том что он TPL, зачем плодить зоопарк из шаблонизаторов.

Служба заботы сообщает следующее:

Здравствуйте, Денис.

К сожалению, это невозможно сделать на xslt, потому что xslt-процессор не обрабатывает контент страницы из базы данных, он работает непосредственно на xsl-файлах. Для решения Вашей задачи можно либо использовать tpl-макросы в контенте, либо править xsl-шаблоны в файлах.

24
В контент страницы, в разрыв текста надо вставить форму.

25
Возник вопрос вставки формы обратной связи, в TPL это решалось вставкой нужном месте макроса webforms add()
В XSLT не проходит такой вариант, точнее TPL макрос отрабатывает, но не хочется использовать его. Вставка udata://webforms/add/ не даст результата, так же как и <![CDATA[<xsl:apply-templates select="document('udata://webforms/add/')/udata"/>]]>

Как решается данная проблема?
Я могу написать условие проверки страницы по адресу, типу и прочее. могу конечно добавить в админку поле и по нему провести проверку, но это не даст гибкости когда форма должна быть выведена в середине контента страницы(

26
Вообщем решение проблемы крылось в отсутствие type: "get", теперь шаблон работает.

27
Была тема уже на основе модальных окон, но без ajax, продолжу тему.
Я сейчас пытаюсь сделать это через ajax запрос.
На главной странице вывожу блок отвечающий за вызов предпросмотра
<a  id="{@id}"
            class="quick-view"
            href="#">
            <span>Предпросмотр</span>
         </a>
Добавил в файл _common.js
jQuery('li a.quick-view').click(function() {
      var id = $(this).attr("href");
      jQuery.ajax({
         url: "/upage//" + id + "/?transform=modules/catalog/quick-view.xsl",
         dataType: 'html',
         success: function (data) {
            site.message({
               id: 'quick_view_' + id,
               header: 'Быстрый просмотр',
               width: 400,
               content: data,
               async: false
            });

         }
      });

      return false;
   });
Вываливается ошибка
------------------
Notice: Undefined offset: 0 in /home/a0018423/domains/a0018423.xsph.ru/public_html/classes/system/subsystems/cmsController/cmsController.php on line 2
Страницы контента Лучшие предложения Лучшие предложения <p>Наверху расположены поля для редактирования метаинформации. Описание этих свойств можно почитать в разделе "Редактирование страниц".</p>
 <p>Если страница отмечена как Активная, то она будет выведена на сайте. Если эта отметка снята, то страница не будет показана посетителям.</p>
 <p>Далее расположены области для визуального редактирования текста страницы. Возможности редактирования описаны в руководстве.</p> 26 26
--------------------
Тут он содержимое главной страниц, хорошо пробую указать сразу id товара
url: "/upage//2394/?transform=modules/catalog/quick-view.xsl",

содержимое файла quick-view.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet   version="1.0"
                   xmlns="http://www.w3.org/1999/xhtml"
                   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                   xmlns:date="http://exslt.org/dates-and-times"
                   xmlns:udt="http://umi-cms.ru/2007/UData/templates"
                   xmlns:xlink="http://www.w3.org/TR/xlink"
                   exclude-result-prefixes="xsl date udt xlink">

    <xsl:output encoding="utf-8" method="html" indent="yes" />
   <xsl:template match="/">
      <xsl:apply-templates select="udata" mode="object-views" />
   </xsl:template>
   <xsl:template match="udata" mode="object-views">
   ыапывапывапыва
<xsl:value-of select="page/@id"/>
<xsl:value-of select="//property[@name='photo']/value"/>
   </xsl:template>
</xsl:stylesheet>

так вот текст выводиться, а все остальное нет.
Ваши мысли по данному поводу?

28
Мне подсказали как, вот вывод custom

 public function getchild($id)
     {
         $hierarchyTypes = umiHierarchyTypesCollection::getInstance();
$hierarchyTypeId = $hierarchyTypes->getTypeByName("catalog", "category")->getId();
$arr = umiHierarchy::getInstance()->getChilds($id,true,true,2,$hierarchyTypeId);
if(empty($arr)){ return 'last'; exit();}
else {
    $arr1 = umiHierarchy::getInstance()->getChilds($id,true,true,1,$hierarchyTypeId);
    if($arr1 == $arr){ return 'pre-last'; exit();}
    else return ''; exit();
}
     }

позволит вам вывести разные уровни вложенности каталога, по разным шаблонам.

29
Шаблоны XSLT / Форма авторизации в корзине
« : 27 Августа 2015, 22:45:29 »
Пытаюсь решить проблему, требуется вывести форму авторизации для гостя или контактной информации в корзине товаров.
Вывод <xsl:apply-templates select="/result/user" /> не дает ничего.
<xsl:apply-templates select="document('udata://users/auth/')/udata" /> выводит только для зарегистрированых посетителей, если гость то выводит ( /emarket/cart/)
Что не так с моей логикой?

30
Я думал про кастом, но хотелось бы средствами xsl сделать. А какие есть идеи по повод кастома? Selector но не понятно как отсортировать тогда все дочерние объекты, он же выведет с предпоследней все последние, limit не решает данную задачу(

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