Как передать значение в XSL-шаблон?

#
Как передать значение в XSL-шаблон?
Значение передаётся только из php-шаблона?
Как это делается?
Буду признателен за пример
#
Re: Как передать значение в XSL-шаблон?
bear64, соседняя тема.
http://hostcms.ru/forums/2/7584/
Заказов не беру. Консультирую редко.
#
Re: Как передать значение в XSL-шаблон?
Где можно посмотреть, как связываются между собой шаблон, макет, XSL-шаблон и как
между ними передаются данные?
#
Re: Как передать значение в XSL-шаблон?
Вообще говоря - в документации http://hostcms.ru/documentation/

bear64 писал(а):
Где можно посмотреть, как связываются между собой шаблон, макет, XSL-шаблон

Вам для какой версии? Если для 6й то в ней нет шаблонов страниц, есть только макеты и XSL.
Если для 5й то вы неправильно разместили тему.

Вкратце суть такая.

Макет и XSL-шаблон между собой по сути никак не связаны, это совершенно отдельные сущности.

Связи задаете вы сами, редактируя разделы структуры.

Для каждого раздела вы можете указать его макет и Типовую Динамическую Страницу (ТДС), а уже в параметрах ТДС задается набор XSL-шаблонов, необходимых для отображения результатов ее работы.
(Важно, если у вас тип раздела структры = документ, а не ТДС, то макет задается в редакторе документа)

Между макетом и XSL никаких данных не передается.

XSL-шаблон обрабатывает данные из XML-документа, который готовится в ТДС. Точнее даже, в вызываемых на ней контроллерах показов.

Сам процесс подготовки XML-документа скрыт "под капотом" системы, в папке /modules/, код там открытый, но судя по уровню ваших вопросов лезть вам туда еще рано. (Строго говоря, в этой папке лучше вообще ничего лишний раз не трогать, независимо от уровня знания системы).

Добавляя В ТДС какой-либо свой код, вы можете передавать в XML свои дополнительные данные, или влиять на передачу в XML стандартных блоков данных. Например, если в отображении списка товаров вам не нужно доп.свойства, то можно отключить их передачу в XML, чтобы сократить число запросов к БД и увеличить скорость генерации страницы.

В принципе, это все.
Заказов не беру. Консультирую редко.
#
Re: Re: Как передать значение в XSL-шаблон?
Вот примерно такого описания не хватало в самом начале )

А, когда мы используем вывод из макета, с помощью задания параметров и show(), код ТДС тоже задействуется? И если "да" то в каком порядке? Т.е. если одни и те же параметры заданы и в макете и в ТДС - кто "победит"?
#
Re: Как передать значение в XSL-шаблон?
Stepan0v писал(а):
А, когда мы используем вывод из макета, с помощью задания параметров и show(),
Нет, если вы просто вставляете код вызова контроллера в макет, то ТДС _для_этого_кода_ и _в_этом_месте_ не используется.

Хотя это все формально.


У ТДС же две части - настройки и код.
Настройки выполняются _до_ вывода макета (точнее, до вывода HTTP-заголовков), результат их выполнение доступен во всем макете и в коде ТДС.
Т.е., например, в настройках ТДС инфосистемы определяется, в какой группе ИС мы находится, находимся ли мы при этом в элементе ИС, если да то в каком.
И эти данные потом используются в коде ТДС.
Точно так же, вы можете использовать эти же данные и в любом месте макета.

Вообще, что такое ТДС? Ее можно представить как два куска php-кода. Первый кусок (настройки) можно вставить перед макетом (перед тегом <html> а второй кусок - в середине макета, там где основной контент. И будет то же самое, но без всякой ТДС. Она выделена в отдельную сущность просто для удобства организации кода.

Stepan0v писал(а):
Т.е. если одни и те же параметры заданы и в макете и в ТДС — кто «победит»?

Тут нет общего случая.
Смотря как вы эти параметры задаете и используете.
Можно сделать так, что они окажутся изолированными друг от друга.

А вообще, актуальное значение - это то, которое задано последним, перед вызовом действия.
Заказов не беру. Консультирую редко.
#
Re: Re: Как передать значение в XSL-шаблон?
Т.е. я могу
из ТДС убрать строку
$Informationsystem_Controller_Show->show();

в макете написать
Core_Page::instance()->execute();

а после этого ещё задать нужные мне параметры и закончить всё это уже в макете
$Informationsystem_Controller_Show->show()


#
Re: Как передать значение в XSL-шаблон?
Stepan0v писал(а):
Т.е. я могу
из ТДС убрать строку
$Informationsystem_Controller_Show->show();

Можете. Но зачем?
Заказов не беру. Консультирую редко.
#
Re: Re: Как передать значение в XSL-шаблон?
Чтобы вносить изменения в вывод XML а макете, при этом используя ТДС.
Но если я задам параметры до вывода ТДС, то ТДС их переопределит.

Можно, конечно, всё это прописывать в самой ТДС, но я гипотетически. )
#
Re: Как передать значение в XSL-шаблон?
Stepan0v,в вашем гипотетическом какая-то извращенная логика Обычно после таких вот допущений потом на форуме появляются темы типа этой http://hostcms.ru/forums/20/7960/
Заказов не беру. Консультирую редко.
Авторизация