Как получить в XSL-шаблоне МагазинКаталогТоваров кастомную переменную?

Модератор
#
Re: Как получить в XSL-шаблоне МагазинКаталогТоваров кастомную переменную?
xelaxela13,
в первом сообщении пример передачи контроллеру внешних данных.

Что значит глобально передать? Давайте использовать устоявшийся понятийно-категориальный аппарат. Чаще всего для показа используются разные объекты контроллеров, поэтому каждому объекту контроллера, который нужен - передаете ваши внешние данные.
#
Re: Как получить в XSL-шаблоне МагазинКаталогТоваров кастомную переменную?
Да, переменная объявляется в шаблоне сайте, поэтому думал, что и в ТДС она будет видна, фиг там. Думал так, потому что в доках написано - Код Страницы ТДС вызывается внутри шаблона сайта.
Ладно, пришлось объявлять её внутри ТДС, благо там доступен массив $_SERVER
$NewVar = Core_Array::get($_SERVER, 'HTTP_HOST');

Но уже двойственность - и в шаблоне получаю урл и обрабатываю (там по сути 8 строчек - получение из адреса 2 первые буквы) и в ТДС так же. Не комильфо... Как можно обойтись однократным написанием моего кода обработки урла? Инклюдить файл с обработкой урла?
#
Re: Как получить в XSL-шаблоне МагазинКаталогТоваров кастомную переменную?
Ок, решено!
Небольшое развитие темы, из-за чего сыр-бор собсно:
Получил в XSL переменную, теперь в зависимости от её значения нужно выводить соответствующие доп. свойства (группы товаров).
Например, переменная равна vg - надо вывести доп. свойство text-vg, переменная равна vv - надо вывести доп. свойство text-vv
Можно было бы сделать по условию на каждый вариант переменной, но вариантов может быть 30-50...
Вот условие для одного варианта, не короткий код...
<xsl:when test="NewVar= 'vg'">
<div><xsl:value-of disable-output-escaping="yes" select=".//shop_group[@id=$group]/property_value[tag_name='text-vg']/value" /></div>
</xsl:when>


Как подставлять переменную в этот код вывода?
<xsl:value-of disable-output-escaping="yes" select=".//shop_group[@id=$group]/property_value[tag_name='text-vg']/value" />

В обычном php все решается точками и кавычками, а тут как быть?
#
Re: Как получить в XSL-шаблоне МагазинКаталогТоваров кастомную переменную?
Примерно так:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
        <xsl:variable name="group">1127</xsl:variable>
        <xsl:variable name="prop_tag" select="/shop/new_var"/>

        <xsl:value-of select="//shop_group[@id=$group]/property_value[tag_name=$prop_tag]/value" />
    </xsl:template>
</xsl:stylesheet>


Код немного изменил для теста, но суть уловить можно


И ещё:
Не проще ли будет выводить в xml только нужное свойство для группы? Те ограничить вывод не в xsl, а в ТДС.
Нужны ли остальные доп св-ва в xml (кроме того, чей tag_name попадает в NewVar)?

Какова вообще задача?
Email: roman.fov@gmail.com Skype: roman-fov
#
Re: Как получить в XSL-шаблоне МагазинКаталогТоваров кастомную переменную?
Угу, спасибо!
По сути да, выводить все свойства в XML не нужно, именно в ТДС их можно было бы фильтровать и выводить только одно.
А как в ТДС можно управлять доп. свойствами?? Интересно-интересно.
У меня по факту этих доп. свойств вытаскивается 60, а нужно для текущего значения $NewVar всего 4.
#
Re: Как получить в XSL-шаблоне МагазинКаталогТоваров кастомную переменную?
Цитата:
А как в ТДС можно управлять доп. свойствами?? Интересно-интересно.


$Shop_Controller_Show->groupsProperties(array(11, 99, 256));

Будет выводить св-ва с ид 11, 99, 256.
Email: roman.fov@gmail.com Skype: roman-fov
#
Re: Как получить в XSL-шаблоне МагазинКаталогТоваров кастомную переменную?
А что вообще хранится в этих свойствах?
Тот факт, что есть 4 доп св-ва и скорее всего они одного типа, наводит на мысль, что вся эта конструкция в тдс&xsl избыточна
Email: roman.fov@gmail.com Skype: roman-fov
#
Re: Как получить в XSL-шаблоне МагазинКаталогТоваров кастомную переменную?
Roman Fov писал(а):
наводит на мысль, что вся эта конструкция в тдс&xsl избыточна

это почему?
Одного типа - да. Четыре свойства - потому что содержание свойств надо выводить в разных местах страницы.
Почему в ТДС - потому что нужно выводить в местах, которые формируются именно в XSL - (описание категории, еще куски вывода фильтра и тд). А как еще влиять на XSL помимо ТДС пока что не в курсе.
#
Re: Как получить в XSL-шаблоне МагазинКаталогТоваров кастомную переменную?
Roman Fov писал(а):

$Shop_Controller_Show->groupsProperties(array(11, 99, 256));

Будет выводить св-ва с ид 11, 99, 256.

Не подойдет, это то же самое - ручками прописывать айди в коде... А нужно по имени доп. свойства (vg, vv, etc...)

Решил вопрос через concat
Авторизация