UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Axiomateria от 25 Ноября 2013, 22:57:56

Название: Два домена с одним шаблоном
Отправлено: Axiomateria от 25 Ноября 2013, 22:57:56
Здравствуйте!
Есть два домена в зоне 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>
Название: Re:Два домена с одним шаблоном
Отправлено: admin от 03 Декабря 2013, 10:18:32
я правильно понимаю, что
1. у вас 2 языковых версии
2. в обеих версиях есть "страница по умолчанию"
3. обе версии используют один и тот же xslt шаблон

При это у вас не получалось вывести главную странице для en версии сайта и вы добавили
<xsl:when test="/result/page/@type-id='169'">    
<xsl:call-template name="index_main_eng"/>
</xsl:when>

или у вас была необходимость сделать главные страницы разными и вы поэтому добавили этот блок?
Название: Re:Два домена с одним шаблоном
Отправлено: Axiomateria от 03 Декабря 2013, 12:52:19
я правильно понимаю, что
1. у вас 2 языковых версии
2. в обеих версиях есть "страница по умолчанию"
3. обе версии используют один и тот же xslt шаблон

При это у вас не получалось вывести главную странице для en версии сайта и вы добавили
<xsl:when test="/result/page/@type-id='169'">    
<xsl:call-template name="index_main_eng"/>
</xsl:when>

Да, именно вот так и задумывалось.
Название: Re:Два домена с одним шаблоном
Отправлено: admin от 03 Декабря 2013, 12:58:10
а что вы видите на главной странице en версии, если убрать из шаблона блок:
<xsl:when test="/result/page/@type-id='169'">    
<xsl:call-template name="index_main_eng"/>
</xsl:when>
?
Название: Re:Два домена с одним шаблоном
Отправлено: Axiomateria от 03 Декабря 2013, 13:47:10
а что вы видите на главной странице en версии, если убрать из шаблона блок:
<xsl:when test="/result/page/@type-id='169'">    
<xsl:call-template name="index_main_eng"/>
</xsl:when>
?

Я так уже конечно экспериментировал, но в таком случае была главная страница английского сайта на русском языке со всеми  русскими ссылками в меню и т.п.
Название: Re:Два домена с одним шаблоном
Отправлено: admin от 03 Декабря 2013, 14:13:38
а как у вас в общем шаблоне вызывается макрос меню (чтобы понять почему он выводить русское меню). Возможно, в самих вызовах у вас указаны конкретные id которые есть только в русской версии?
Название: Re:Два домена с одним шаблоном
Отправлено: Axiomateria от 03 Декабря 2013, 14:13:59
А ещё я вот так пробовал:              
            <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>
- в таком случае на английском сайте как и на русском шаблоны выстраивались друг над другом в два этажа.
Название: Re:Два домена с одним шаблоном
Отправлено: Axiomateria от 03 Декабря 2013, 14:15:21
а как у вас в общем шаблоне вызывается макрос меню (чтобы понять почему он выводить русское меню). Возможно, в самих вызовах у вас указаны конкретные id которые есть только в русской версии?

Да, там меню спецефичное и формируется в виде вывода ссылок на дерево некоторых важных страниц сайта.
.
Название: Re:Два домена с одним шаблоном
Отправлено: admin от 03 Декабря 2013, 14:33:43
ну тогда у вас нет возможности использовать один блок для главной странице для разных языковых версий, так как у вас в этом блоке много вызовов которые привязанны конкретно к страницам русской версии сайта

На вскидку есть 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"> соответственно)
Название: Re:Два домена с одним шаблоном
Отправлено: Axiomateria от 03 Декабря 2013, 15:23:54
Спасибо, admin!
Но в моём случае, как я понимаю, что константы не применить, так как это описываете вы, так как сайты на разных доменах и в итоге я подключил их на каждый свой отдельный шаблон в папке xslt.