Здравствуйте!
Есть два домена в зоне RU и COM - оба вставлены в одну лицензию и с одним шаблоном.
Тот который RU открывает все страницы на русском языке на сайте и соответственно COM на сайте открывает страницы на английском языке. Шаблон (визуальный HTML/CSS) один и тот же для обоих языковых вариантов страниц, разные только типы данных для разных языковых страниц.
Но корректно открывается только страницы сайта на домене RU и на COM тоже все страницы нормально открываются, кроме главной страницы, которая обозначена в структуре как "Страница по умолчанию". То есть получается две главные страницы на одном шаблоне и вызываются они в файле /layouts/default.xsl так:
<xsl:template match="/" mode="layout">
<html>
<head>
<xsl:call-template name="head"/>
</head>
<body>
<xsl:choose>
<xsl:when test="/result/page/@is-default='1'">
<xsl:call-template name="index_main"/>
</xsl:when>
<xsl:when test="/result/page/@type-id='169'">
<xsl:call-template name="index_main_eng"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="pages-info"/>
</xsl:otherwise>
</xsl:choose>
- где "index_main_eng" вызов главной страницы по умолчанию для сайта на домене COM.
Вопрос: как сделать так, что бы в системе на одной лицензии с одним визуальным шаблоном было две страницы по умолчанию?
Есть предположение, что надо сделать второй шаблон для mode="layout_eng" и как-то его здесь ещё и подключить (в файле /library/common.xsl):
<xsl:template match="/">
<xsl:choose>
<xsl:when test="count(udata) = 0">
<xsl:apply-templates select="." mode="layout" />
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
я правильно понимаю, что
1. у вас 2 языковых версии
2. в обеих версиях есть "страница по умолчанию"
3. обе версии используют один и тот же xslt шаблон
При это у вас не получалось вывести главную странице для en версии сайта и вы добавили
<xsl:when test="/result/page/@type-id='169'">
<xsl:call-template name="index_main_eng"/>
</xsl:when>
или у вас была необходимость сделать главные страницы разными и вы поэтому добавили этот блок?
а что вы видите на главной странице en версии, если убрать из шаблона блок:
<xsl:when test="/result/page/@type-id='169'">
<xsl:call-template name="index_main_eng"/>
</xsl:when>
?
А ещё я вот так пробовал:
<xsl:choose>
<xsl:when test="/result/page/@is-default='1'">
<xsl:call-template name="index_main"/>
<xsl:call-template name="index_main_eng"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="pages-info"/>
</xsl:otherwise>
</xsl:choose>
- в таком случае на английском сайте как и на русском шаблоны выстраивались друг над другом в два этажа.
ну тогда у вас нет возможности использовать один блок для главной странице для разных языковых версий, так как у вас в этом блоке много вызовов которые привязанны конкретно к страницам русской версии сайта
На вскидку есть 2 варианта
1. этот и ему подобные в зависимости от отрибута lang="en" в узле result
<xsl:choose>
<xsl:when test="/result/page/@is-default='1' and /result/@lang='en'">
<xsl:call-template name="index_main_eng"/>
</xsl:when>
<xsl:when test="/result/page/@is-default='1'">
<xsl:call-template name="index_main"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="pages-info"/>
</xsl:otherwise>
</xsl:choose>
2. сделать все вызовы в блоке для главной страницы адаптивными за счет использования языковых сущностей.
Например, у нас есть вызов меню в котором четко прописан id страницы с русской версии сайта (пусть id = 100), а в англ версии сайта там должен быть id = 200. Код вызова в общем шаблоне выглядит так:
<xsl:apply-templates select="document('udata://content/menu/void/1/100)/udata" />
.
Меняем id на языковую сущность (название придумываете сами)
<xsl:apply-templates select="document('udata://content/menu/void/1/&menu_parent_pid;)/udata" />
.
Затем идем в файлы языковых сущностей ( /templates/demodizzy/xslt/i18n/constants.dtd и /templates/demodizzy/xslt/i18n/constants.en.dtd) и добавляете там соответствующие языковые сущности (<!ENTITY menu_parent_pid "100"> и <!ENTITY menu_parent_pid "200"> соответственно)