Как в модуле меню привязать меню к домену
Материал из Umicms
Версия от 14:42, 5 мая 2014; Mad grant (обсуждение | вклад) (переименовал «Как сделать универсальный шаблон меню в мультисайтовости» в «Как в модуле меню привязать меню к домену»)
Актуально для версии 2.9.6
Задача
У Вас есть два сайта на одной лицензии, domain1.com и domain2.com:
На обоих сайтах используется один и тот же xslt шаблон.
Вы хотите внедрить модуль меню, но для вызова меню Вам нужно будет подставлять идентификатор меню, а их у Вас создано два.
Решение
Чтобы сохранить универсальность шаблона, необходимо будет динамически подставлять в вызов макроса menu draw() тот или иной идентификатор меню, в зависимости от домена.
Проще всего задачу можно решить следующим образом,
- У созданных меню укажите в качестве идентификатора домен, к которому они относятся:
- В xslt шаблоне текущий домен доступен в result'е:
- Поэтому подставить его с помощью xPath функции concat() не составит особого труда:
- В tpl получить текущий домен можно с помощью глобального макроса %domain%, то есть вызов примет вид:
Например, в demodizzy вызов примет следующий вид:
<xsl:apply-templates select="document(concat('udata://menu/draw/', $domain))/udata" mode="info-pages-head" />
где $domain это:
<xsl:variable name="domain" select="/result/@domain" />
%menu draw(%domain%, 'default')%