Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > title с помощью XSL


Автор: mimo85 3.9.2013, 23:34
Здравствуйте!
Достался по наследству сайт шаблон которого написан на XSL.
Сразу скажу что этот язык никогда не изучал, сейчас читаю по ссылкам с форума документацию.
Может пользователи мне быстрее подскажут. Мне нужно для отдельных страниц сайта сделать title отличный от того что представлен в шаблоне. Как это можно реализовать?
вот что сейчас прописано в шаблоне
 <title>
                <xsl:if test="//PARAM[@name='node']">
                    <xsl:variable name="node" select="//PARAM[@name='node']"/>
                    <xsl:value-of select="//NODE[@node=$node]/@name"/>&#xA0;|&#xA0;
                </xsl:if>
                <xsl:for-each select="//SECTION[contains(//REALM/@name, @name) and @realm != '1000']">
                    <xsl:sort select="position()" data-type="number" order="descending" />
                    <xsl:value-of select="@title"/><xsl:if test="position() != last()">&#xA0;|&#xA0;</xsl:if>
                </xsl:for-each>
 </title>

как я понял он делает что то типа хлебных крошек и записывает в title заголовок категории потом заголовок статьи.
так как в php больше разбираюсь, мысль есть такая - возможно с документа можно сделать инклуд на файл php и от туда отдавать title?
Или выслушаю ваши предложения.
Заранее спасибо!

Автор: diadiavova 4.9.2013, 09:05
Цитата(mimo85 @  4.9.2013,  00:34 Найти цитируемый пост)
Или выслушаю ваши предложения.

Я бы просто изменил шаблон.
Цитата(mimo85 @  4.9.2013,  00:34 Найти цитируемый пост)
так как в php больше разбираюсь, мысль есть такая - возможно с документа можно сделать инклуд на файл php и от туда отдавать title?

Стандарты языка такой возможности не предусматривают, но язык расширяемый, поэтому наличие возможности включения кода на других языках зависит от того, чем обрабатывается код. Иными словами: доступна ли для тебя такая возможность, зависит от хслт-процессора, который ты используешь для выполнения преобразования. Если решишь остановиться на втором варианте - перенесу тему в соответствующий раздел, но я бы посоветовал рассмотреть первый вариан( уж коль скоро достался сайт с кучей кода на этом языке , разбираться в нём всё равно придётся ).

Автор: mimo85 4.9.2013, 10:13
не подскажите конструкцию кода изменения шаблона - нужно для определенных страниц выводить определенный тайтл а для всех остальных оставить как есть.

Автор: diadiavova 4.9.2013, 10:59
В данном случае подойдёт элемент чуз
http://msdn.microsoft.com/ru-ru/library/ms256169.aspx
в остальном всё зависит от того, что вкладывается в понятие "определённые страницы"

Автор: mimo85 4.9.2013, 11:03
"определённые страницы" - это конкретные страницы на сайте - сайт.ru/razdel/stranica/

Автор: diadiavova 4.9.2013, 11:27
Это понятно, речь о критерии, по которому они отличаются от "неопределённых". Если они просто расположены по другим адресам и критерием является именно адрес, то, возможно, есть смысл описать преобразование для них отдельно ( в другом хслт). Если же можно их выявить как-то по содержимому, то чуза вполне хватит.

Автор: mimo85 4.9.2013, 11:53
отличить их можно только по адресу страницы т.к. остальное все в одном шаблоне.
на пхп это выглядит примерно так
<?
$change = false;
if( $_SERVER['REQUEST_URI'] === "/адрес_страницы"){
                $myTitle = "Мой титл";
                $myKeywords = "Мои ключи";
                $myDescription = "мое описание";
                $change = true;
        }

потом

<? if($change){ ?>
<title><? echo $myTitle; ?></title>
<meta name="description" content="<? echo $myDescription;?>">
<meta name="keywords" content="<? echo $myKeywords;?>">
<? } else {?>
Тот код что был для титла
<? } ?>

Автор: diadiavova 4.9.2013, 12:44
Ну так не получится. Здесь проблема в том, что хслт не содержит стандартных функций, позволяющих определить адрес документа. Выход в том, чтобы такие страницы преобразовывать другим хслт. При разумном использовании импорта и инклюда можно избежать дублирования кода. 
Хотя, если использовать расширения формата, то можно расширить его возможности. Поинтересуйся, есть ли такая возможность для пхп в специальном разделе
http://forum.vingrad.ru/forum/php-x-techs-cooperations.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)