Кто все ж поможет переделать под 6-ку данное изменение в типовой ? с шаблоном может сама справлюсь...
Цитата:
Делается очень просто.
Создаем у ТДС параметр «префикс английского раздела», называем его переменную english_version_url.
В структуре сайта в англоязычной части создаем раздел новости, все параметры настраиваем как обычно, параметр «префикс» указываем eng (если у вас английская часть по адресу /eng/)
В настройках ТДС вставляем следующий фрагмент:
//часть кода выше вставки
///////////////////////////////////////////
// Если указание на страницу - не прерываем определение
if (ereg ("^part-([0-9]*)$", end($GLOBALS['URL_ARRAY']), $regs) && to_int($regs[1]) > 0)
{
/* Страница умножается на кол-во элементов, выводимых на страницу */
$break_if_path_not_found = false;
$GLOBALS['part_ii'] = $regs[1];
}
else
{
$break_if_path_not_found = true;
$GLOBALS['part_ii'] = 1;
}
/** ИЗМЕНЕННЫЙ КУСОК ДЛЯ МУЛЬТИРАЗДЕЛА */
/* проверим, не находимся ли мы в английской части сайта */
$english_version_url = to_str($GLOBALS['LA']['english_version_url']);
$url_array = $GLOBALS['URL_ARRAY'];
/* получаем для пути ассоциативный массив с id группы и id/url элемента для данной инфосистемы */
$GLOBALS['INFSYS_result'] = $GLOBALS['LA_InformationSystem']->GetInformationFromPath($InformationSystem_id, $url_array, $break_if_path_not_found);
/** КОНЕЦ ИЗМЕНЕННОГО КУСКА ДЛЯ МУЛЬТИРАЗДЕЛА */
/* Если путь существует */
if ($GLOBALS['INFSYS_result'])
//ну и так далее
(я привел еще часть окружающего кода для ориентировки)
а в коде самой ТДС делаем такую вставку:
/* Массив внешних параметров, передаваемых в XML */
$external_propertys = array();
/** ИЗМЕНЕННЫЙ КУСОК ДЛЯ МУЛЬТИРАЗДЕЛА */
/* проверим, не находимся ли мы в английской части сайта
и передадим в xml соответсвующий маркер */
$english_version_url = to_str($GLOBALS['LA']['english_version_url']);
$url_array = $GLOBALS['URL_ARRAY'];
if ($url_array[0] == $english_version_url) {
$external_propertys['english_version_enable'] = 1;
$external_propertys['version_prefix'] = '/'.$english_version_url;
} else {
$external_propertys['english_version_enable'] = 0;
$external_propertys['version_prefix'] = '';
}
В xsl-шаблонах, во все урл вставляем часть {/document/version_prefix}, для вывода префикса. Когда сайт на русском сам префикс будет нулевой, для английской версии — /eng
Например:
<a href="{/document/version_prefix}{item_path}">
А вывод замещаемого контента реализуем через допсвойства.
Вот так выглядит вывод заголовка в списке элементов:
<!-- Название -->
<p class="news_title">
<a href="{/document/version_prefix}{item_path}">
<xsl:choose>
<xsl:when test="/document/english_version_enable = 1 and item_propertys/item_property[@xml_name = 'english_name']/node() and item_propertys/item_property[@xml_name = 'english_name']/value != ''">
<xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property[@xml_name = 'english_name']/value"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of disable-output-escaping="yes" select="item_name"/>
</xsl:otherwise>
</xsl:choose>
</a>
</p>
Делается очень просто.
Создаем у ТДС параметр "префикс английского раздела", называем его переменную english_version_url.
В структуре сайта в англоязычной части создаем раздел новости, все параметры настраиваем как обычно, параметр "префикс" указываем eng (если у вас английская часть по адресу /eng/)
В настройках ТДС вставляем следующий фрагмент:
//часть кода выше вставки
///////////////////////////////////////////
// Если указание на страницу - не прерываем определение
if (ereg ("^part-([0-9]*)$", end($GLOBALS['URL_ARRAY']), $regs) && to_int($regs[1]) > 0)
{
/* Страница умножается на кол-во элементов, выводимых на страницу */
$break_if_path_not_found = false;
$GLOBALS['part_ii'] = $regs[1];
}
else
{
$break_if_path_not_found = true;
$GLOBALS['part_ii'] = 1;
}
/** ИЗМЕНЕННЫЙ КУСОК ДЛЯ МУЛЬТИРАЗДЕЛА */
/* проверим, не находимся ли мы в английской части сайта */
$english_version_url = to_str($GLOBALS['LA']['english_version_url']);
$url_array = $GLOBALS['URL_ARRAY'];
/* получаем для пути ассоциативный массив с id группы и id/url элемента для данной инфосистемы */
$GLOBALS['INFSYS_result'] = $GLOBALS['LA_InformationSystem']->GetInformationFromPath($InformationSystem_id, $url_array, $break_if_path_not_found);
/** КОНЕЦ ИЗМЕНЕННОГО КУСКА ДЛЯ МУЛЬТИРАЗДЕЛА */
/* Если путь существует */
if ($GLOBALS['INFSYS_result'])
//ну и так далее
(я привел еще часть окружающего кода для ориентировки)
а в коде самой ТДС делаем такую вставку:
/* Массив внешних параметров, передаваемых в XML */
$external_propertys = array();
/** ИЗМЕНЕННЫЙ КУСОК ДЛЯ МУЛЬТИРАЗДЕЛА */
/* проверим, не находимся ли мы в английской части сайта
и передадим в xml соответсвующий маркер */
$english_version_url = to_str($GLOBALS['LA']['english_version_url']);
$url_array = $GLOBALS['URL_ARRAY'];
if ($url_array[0] == $english_version_url) {
$external_propertys['english_version_enable'] = 1;
$external_propertys['version_prefix'] = '/'.$english_version_url;
} else {
$external_propertys['english_version_enable'] = 0;
$external_propertys['version_prefix'] = '';
}
В xsl-шаблонах, во все урл вставляем часть {/document/version_prefix}, для вывода префикса. Когда сайт на русском сам префикс будет нулевой, для английской версии - /eng
Например:
<a href="{/document/version_prefix}{item_path}">
А вывод замещаемого контента реализуем через допсвойства.
Вот так выглядит вывод заголовка в списке элементов:
<!-- Название -->
<p class="news_title">
<a href="{/document/version_prefix}{item_path}">
<xsl:choose>
<xsl:when test="/document/english_version_enable = 1 and item_propertys/item_property[@xml_name = 'english_name']/node() and item_propertys/item_property[@xml_name = 'english_name']/value != ''">
<xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property[@xml_name = 'english_name']/value"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of disable-output-escaping="yes" select="item_name"/>
</xsl:otherwise>
</xsl:choose>
</a>
</p>
Если что-то будет не понятно - стучитесь ко мне в аську, я дам вам вход от тестового сайта, ссылки на который я дал в самом начале этого поста - поковыряетесь сами.
Уважаемый Kotoff а есть ли подобное решение для 6 версии? Сломал голову что делать, а ведь как-то оно должно решаться 8( Помогите пожалуйста, в этой теме поднимался вопрос но ответа и решения никто так и не выложил 8(