UMIhelp

Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: arbuzzz от 26 Декабря 2016, 12:45:13

Название: Как получить рендер только блока товаров в корзине
Отправлено: arbuzzz от 26 Декабря 2016, 12:45:13
Добрый день. Как мне получить результат рендера только самого блока товаров с ИТОГО в корзине. Т.е. /emarket/basket/ видимо.

Вообщем мне нужно сделать обновление позиций в корзине в случае соблюдения неких условий. Никак не могу понять, как это сделать. При попытке получить через parseTemplate возвращается массив. А мне нужен готовый отрендеренный html код.
Название: Re: Как получить рендер только блока товаров в корзине
Отправлено: aghigay от 26 Декабря 2016, 13:16:03
Видимо вы пытаетесь рендерить udata://emarket/basket/ ?

Тогда рекомендую воспользоваться механизмом transform.

Выглядит это так: http://site.ru/udata/emarket/basket/?transform=/ajax.xsl

При этом ajax.xsl - это шаблон, отвечающий за xslt-преобразование каких-то данных (в вашем случае emarket/basket) в html

Ну и потом можно результат этого преобразования записать в какое-нибудь место, например в тег.
Название: Re: Как получить рендер только блока товаров в корзине
Отправлено: arbuzzz от 26 Декабря 2016, 13:37:48
Видимо вы пытаетесь рендерить udata://emarket/basket/ ?

Тогда рекомендую воспользоваться механизмом transform.

Выглядит это так: http://site.ru/udata/emarket/basket/?transform=/ajax.xsl

При этом ajax.xsl - это шаблон, отвечающий за xslt-преобразование каких-то данных (в вашем случае emarket/basket) в html

Ну и потом можно результат этого преобразования записать в какое-нибудь место, например в тег.

Я в качестве параметра дал шаблон корзины - ?transform=/modules/emarket/cart.xsl

В ответ получаю ошибку:
<![CDATA[ Failed to open udata:// stream ]]>
Название: Re: Как получить рендер только блока товаров в корзине
Отправлено: aghigay от 26 Декабря 2016, 14:21:51
Ну так:
1. шаблон должен существовать
2. шаблон должен обрабатывать данные без ошибок

Судя по всему вы берете стандартный шаблон, этот шаблон имеет зависимости от других шаблонов и из-за этого есть миллион ошибок.
Название: Re: Как получить рендер только блока товаров в корзине
Отправлено: arbuzzz от 26 Декабря 2016, 15:16:43
Ну так:
1. шаблон должен существовать
2. шаблон должен обрабатывать данные без ошибок

Судя по всему вы берете стандартный шаблон, этот шаблон имеет зависимости от других шаблонов и из-за этого есть миллион ошибок.
Если не сложно, не могли бы показать действующий пример или где про это в документации есть. Что-то не я не до конца понимаю, как это должно работать.
Название: Re: Как получить рендер только блока товаров в корзине
Отправлено: aghigay от 26 Декабря 2016, 16:16:09
Берете файлик default.xsl в /templates/ШАБЛОН/xslt/default.xsl

Делаете его копию - ajax.xsl

В нем удаляете все variable, param, include

Вместо них вписываете
<xsl:template match="/">
11111
</xsl:template>

Вызываете скрипт через http://site.ru/udata/emarket/basket/?transform=/ajax.xsl

Наслаждаетесь 11111 на экране
Название: Re: Как получить рендер только блока товаров в корзине
Отправлено: arbuzzz от 30 Декабря 2016, 15:14:43
Берете файлик default.xsl в /templates/ШАБЛОН/xslt/default.xsl

Делаете его копию - ajax.xsl

В нем удаляете все variable, param, include

Вместо них вписываете
<xsl:template match="/">
11111
</xsl:template>

Вызываете скрипт через http://site.ru/udata/emarket/basket/?transform=/ajax.xsl

Наслаждаетесь 11111 на экране

Спасибо за разъяснения. C 1111 получилось. Но при переносе в ajax шаблон текущего шаблона корзины со всякими амперсендами и переменными, без которых ну никак не получается нормально вывести корзины. А если они указаны в шаблоне, то перестают отрабатывать блоки (подвал или блок позиции заказа) где есть спецсимволы. Этот можно можно как-то обойти?
Название: Re: Как получить рендер только блока товаров в корзине
Отправлено: aghigay от 30 Декабря 2016, 15:34:05
Да, для спецсимволов нужно подключить <!DOCTYPE xsl:stylesheet SYSTEM "ulang://i18n/constants.dtd:file">
Ну а для всего остального нужно смотреть по факту что именно требуется.
Название: Re: Как получить рендер только блока товаров в корзине
Отправлено: arbuzzz от 30 Декабря 2016, 16:19:43
Да, для спецсимволов нужно подключить <!DOCTYPE xsl:stylesheet SYSTEM "ulang://i18n/constants.dtd:file">
Ну а для всего остального нужно смотреть по факту что именно требуется.
Это у меня подключено. Блоки, как я понял, перестают отрабатывать, если встречаются амперсенды и собаки (@). Вообще можно просто проверить подав на вход из того же demodizzy стандартный cart.xsl взяв оттуда только нужны блоки.

Название: Re: Как получить рендер только блока товаров в корзине
Отправлено: arbuzzz от 30 Декабря 2016, 16:50:30
Пока сам справился. Там оказывается переменная подвисла, которая обычно тянется из базового шаблона. С $user-type. Не заметил сразу.
Название: Re: Как получить рендер только блока товаров в корзине
Отправлено: umidev от 02 Мая 2018, 02:34:47
Берете файлик default.xsl в /templates/ШАБЛОН/xslt/default.xsl

Делаете его копию - ajax.xsl

В нем удаляете все variable, param, include

Вместо них вписываете
<xsl:template match="/">
11111
</xsl:template>

Вызываете скрипт через http://site.ru/udata/emarket/basket/?transform=/ajax.xsl

Наслаждаетесь 11111 на экране

я извиняюсь, а как подобное сделать с php шаблонизатором?