Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Модуль Меню - заголовки для блоков меню их поля "Название"

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

Ответов: 8
Просмотров: 3732
Последний ответ 06 Июнь 2014, 12:06:35
от admin
Тип поля "Состаное"

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

Ответов: 4
Просмотров: 315
Последний ответ 28 Декабрь 2016, 17:14:17
от Sumrakrnd
Задать значени поля тип "Составное"?

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

Ответов: 5
Просмотров: 2717
Последний ответ 14 Апрель 2014, 21:20:45
от ilyar
Мультизагрузка файлов в поля "набор изображения"

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

Ответов: 0
Просмотров: 103
Последний ответ 26 Апрель 2017, 19:26:48
от atach
Добавление поля "объем" в карточку товара, которое влияло бы на цену

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

Ответов: 5
Просмотров: 466
Последний ответ 06 Ноябрь 2016, 14:44:49
от aghigay

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

*

31rus

  • *
  • 46
  • +2/-0
    • Просмотр профиля
Есть несколько языковых версий, в каждой одинаковая структура с идентичными url страницами

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

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

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

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
как-то так document(concat('upage://(', substring-after(result/page/@link, result/@pre-lang) ,')'))//group[@name='slider']

*

31rus

  • *
  • 46
  • +2/-0
    • Просмотр профиля
У меня не срабатывает(

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

*

ilyar

  • ***
  • 128
  • +28/-0
  • UMI.CMS, Yii, Vagrant, BEM
    • Просмотр профиля
    • ilyar на toster
Рекомендую посмотреть в сторону Выборки из БД: протокол USel и построить  usel://getOriginPage/?pagePath=/foo/bar/&group=slider или usel://getOriginPage/(/foo/bar/)/slider/ это пример использования, еще надо сам запрос построить см. доку.
« Последнее редактирование: 16 Январь 2016, 15:25:03 от ilyar »

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
Цитировать
У меня не срабатывает(

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

так а куда вы вставляете, в какую ноду, какой доступ к переменным, естественно 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
« Последнее редактирование: 16 Январь 2016, 16:00:22 от crazygeorgio »

*

31rus

  • *
  • 46
  • +2/-0
    • Просмотр профиля
Цитировать
У меня не срабатывает(

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

так а куда вы вставляете, в какую ноду, какой доступ к переменным, естественно 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
« Последнее редактирование: 16 Январь 2016, 16:28:41 от 31rus »

*

31rus

  • *
  • 46
  • +2/-0
    • Просмотр профиля
Рекомендую посмотреть в сторону Выборки из БД: протокол USel и построить  usel://getOriginPage/?pagePath=/foo/bar/&group=slider или usel://getOriginPage/(/foo/bar/)/slider/ это пример использования, еще надо сам запрос построить см. доку.

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

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
ага, точно upage выводит из текущей языковой версии, даже и не знал об этом, тогда я бы написал кастомный метод, те же манипуляции с адресом, а потом по адресу получаешь id страницы с помощью метода getidbypath, ну а дальше можешь id через upage или сразу через extGroups

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

upage не отдает result, там udata/page/@id
« Последнее редактирование: 16 Январь 2016, 16:37:20 от crazygeorgio »

*

31rus

  • *
  • 46
  • +2/-0
    • Просмотр профиля
ага, точно upage выводит из текущей языковой версии, даже и не знал об этом, тогда я бы написал кастомный метод, те же манипуляции с адресом, а потом по адресу получаешь id страницы с помощью метода getidbypath, ну а дальше можешь id через upage или сразу через extGroups

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

upage не отдает result, там udata/page/@id

Сильно не меняет это решения проблемы, что за странность с upage(

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
Я же написал в первой части, напишите кастомный метод, возвращающий id страницы или сразу все данные

*

ilyar

  • ***
  • 128
  • +28/-0
  • UMI.CMS, Yii, Vagrant, BEM
    • Просмотр профиля
    • ilyar на toster
А какой смысл делать выборку usel ради одной страницы?
Upage должен решить мою задачу, вопрос почему он не хочет отрабатывать корректно?

Используя Upage также происходит выборка и теоретически она будет работать в рамках текущей языковой версии т.е. не получить в EN страницу RU (не проверял, могу ошибаться).

Я предлагаю Usel т.е. вместо выборки которую реализует протокол Upage использовать Usel полностью полностью контролируемую выборку с возможностью оптимизировать запрос под задачу. Так же, в данном случае, это лучшая альтернатива реализации кастомнного метод в котором тоже придется решать через выборку,
« Последнее редактирование: 17 Январь 2016, 01:15:09 от ilyar »

*

31rus

  • *
  • 46
  • +2/-0
    • Просмотр профиля
А какой смысл делать выборку usel ради одной страницы?
Upage должен решить мою задачу, вопрос почему он не хочет отрабатывать корректно?

Используя Upage также происходит выборка и теоретически она будет работать в рамках текущей языковой версии т.е. не получить в EN страницу RU (не проверял, могу ошибаться).

Я предлагаю Usel т.е. вместо выборки которую реализует протокол Upage использовать Usel полностью полностью контролируемую выборку с возможностью оптимизировать запрос под задачу. Так же, в данном случае, это лучшая альтернатива реализации кастомнного метод в котором тоже придется решать через выборку,

Спасибо за идею и не только за эту!
Ну я не специалист конечно, но мне кажется что, при варианте с Usel сначала происходите выборка страницы с учетом требований, а потом результат обрабатывается, вто время как при Upage сразу обрабатываем полученные результат, разве это не так?

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

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
upage думаю будет работать если использовать id страницы, а не путь, и врядли upage можно назвать выборкой, это скорее всего просто обращение к странице. Если речь о производительности, то как раз вместо usel лучше использовать кастомный метод без всяких выборок и прочего.

*

31rus

  • *
  • 46
  • +2/-0
    • Просмотр профиля
набросал кастом

public function getLanguageId($url, $lang_prefix)
                {
                              
                     $pattern = "/\/$lang_prefix/";
                      $lang_prefix_new = preg_replace($pattern,'' ,$url);
                   
                      $hierarchy = umiHierarchy::getInstance();
                      //Получим id страницы по ее url'у
                     $elementId = $hierarchy->getIdByPath($lang_prefix_new);
                     
                      return "$elementId";
                 }   

Но все равно возвращает id из текущей языковой версии(   

*

31rus

  • *
  • 46
  • +2/-0
    • Просмотр профиля
А какой смысл делать выборку usel ради одной страницы?
Upage должен решить мою задачу, вопрос почему он не хочет отрабатывать корректно?

Используя Upage также происходит выборка и теоретически она будет работать в рамках текущей языковой версии т.е. не получить в EN страницу RU (не проверял, могу ошибаться).

Я предлагаю Usel т.е. вместо выборки которую реализует протокол Upage использовать Usel полностью полностью контролируемую выборку с возможностью оптимизировать запрос под задачу. Так же, в данном случае, это лучшая альтернатива реализации кастомнного метод в котором тоже придется решать через выборку,

А как мы через USEL это можем получит, ну найти потомков от текущей страницы, понятно.
Но поля мы не получим, нам все равно нужен будет Upage потом, для обработки результатов выдачи?
Или я что то не понимаю(