UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: agata от 29 Декабря 2011, 14:48:34

Название: Как правильно внедрить в шаблон html-код
Отправлено: agata от 29 Декабря 2011, 14:48:34
Здравствуйте!

Помогите, пожалуйста, внести правку в шаблон страницы.

Есть шаблон blogs.xsl. Сейчас в нем "собираются" ссылки на все блоги сайта.

Нужно добавить вывод на той же странице сайта много ссылок на внешние блоги (с других сайтов). Хотелось бы эти "много ссылок" оформить отдельным файлом (например, outer_blogs.xls) и внедрить этот файл в blogs.xsl. Вопрос - как внедрить?

PS. сайт достался "по наследству", с UMI работаю в первый раз, сделать нужно ... вчера  ???
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: grave от 29 Декабря 2011, 19:37:25
может xsl:call-template ?
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: admin от 29 Декабря 2011, 23:33:53
сделал бы так же как и grave , то есть сделал бы новый именной шаблон в любом файле (можете и в новом, только не забудь его подключить)

пример именного шаблона
<xsl:template name="blogs_links">
<a href="#">Ваша ссылка </a> или еще какое содержимое
</xsl:template>

вызываете его в нужном вам месте вот такой конструкцией
<xsl:call-template name="blogs_links" />
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: agata от 30 Декабря 2011, 07:19:34
Grave, Admin, спасибо. Все получилось именно так, как вы написали. С новым годом и удачи вам!
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: aizul от 20 Февраля 2012, 11:53:30
А как внедрить html в шаблон новостей чтобы он не повторялся. А то у меня идет список новостей и под каждой новостью появляется мой код, а мне нужно чтобы он был только внизу.
Вот шаблон:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:umi="http://www.umi-cms.ru/TR/umi"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="result[@module = 'news' and @method = 'item']">
<xsl:value-of select="page//property[@name = 'content']/value" disable-output-escaping="yes" />
</xsl:template>

<xsl:template match="result[@module = 'news' and @method = 'rubric']">
<xsl:apply-templates select="document('udata://news/lastlist')/udata" />
</xsl:template>

<xsl:template match="udata[@module = 'news' and @method = 'lastlist']">
<xsl:apply-templates select="items">
<xsl:with-param name="list-class">
<xsl:text>news-lastlist</xsl:text>
</xsl:with-param>
</xsl:apply-templates>
</xsl:template>


<xsl:template match="udata[@method = 'lastlist']//item">
<xsl:param name="item-info" select="document(concat('upage://', @id))" />
<xsl:variable name="date" select="document(concat('udata://system/convertDate/', @publish_time, '/(d-m-Y)'))/udata" />

<table><tr><td>
<li>
<a href="{@link}" umi:element-id="{@id}" umi:field-name="name">
<xsl:value-of select="." />
</a>

<xsl:text> (</xsl:text>
<span umi:element-id="{@id}" umi:field-name="publish_time" umi:format="d-m-Y">
<xsl:value-of select="$date" />
</span>
<xsl:text>)</xsl:text>
</li><xsl:value-of select="$item-info//property[@name = 'anons']/value" disable-output-escaping="yes" />
</td>
<td>
<a href="{@link}" umi:field-name="anons_pic" umi:empty="картинка">
<xsl:choose>
<xsl:when test="$item-info//property[@name='anons_pic']/value">
<xsl:variable name="src" select="$item-info//property[@name='anons_pic']/value" />
<xsl:variable name="img_width" select="200" />
<xsl:variable name="img_height" select="auto" />

<xsl:variable name="thumb" select="document(concat('udata://system/makeThumbnail/(.',$src,')/',$img_width,'/',$img_height))/udata/src" />
<img src="{$thumb}" align="right"/>
</xsl:when>
<xsl:otherwise><img src="/images/cms/kubki.jpg" width="200" align="right" /></xsl:otherwise>
</xsl:choose>
</a>


</td></tr></table>

</xsl:template>

<!-- short_list -->
<xsl:template match="udata[@module = 'news' and @method = 'lastlist']" mode="short_list">
<xsl:apply-templates select="items" mode="short_list">
<xsl:with-param name="list-class">
<xsl:text>news-lastlist</xsl:text>
</xsl:with-param>
</xsl:apply-templates>
</xsl:template>


<xsl:template match="udata[@method = 'lastlist']//item"  mode="short_list">
<xsl:param name="item-info" select="document(concat('upage://', @id))" />
<xsl:variable name="date" select="document(concat('udata://system/convertDate/', @publish_time, '/(d-m-Y)'))/udata" />
<li>
<a href="{@link}" umi:element-id="{@id}" umi:field-name="name">
<xsl:value-of select="." />
</a>

<xsl:text> (</xsl:text>
<span umi:element-id="{@id}" umi:field-name="publish_time" umi:format="d-m-Y">
<xsl:value-of select="$date" />
</span>
<xsl:text>)</xsl:text>

<!--<xsl:apply-templates select="document(concat('upage://', @id, '.anons_pic'))/udata">
<xsl:with-param name="page-id" select="@id" />
</xsl:apply-templates>-->
</li>
</xsl:template>
<!-- short_list -->


<xsl:template match="property[@name = 'anons_pic']">
<xsl:param name="page-id" />


<img align="right" src="/images/autothumbs{value/@folder}/{value/@name}_50_.{value/@ext}"
umi:element-id="{$page-id}"
umi:field-name="{@name}"
/>

</xsl:template>

<xsl:template match="udata[@module = 'system' and @method = 'makeThumbnail']">
<xsl:param name="page-id" />
<xsl:param name="object-id" />
<xsl:param name="field-name" />

<img src="{src}" umi:element-id="{$page-id}" umi:object-id="{$object-id}" umi:field-name="{$field-name}" />
</xsl:template>


</xsl:stylesheet>
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: BaceH от 20 Февраля 2012, 18:21:09
вставляйте ваш код после вызова шаблона выводящего ленту новостей.
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: aizul от 21 Февраля 2012, 12:17:54
вставляйте ваш код после вызова шаблона выводящего ленту новостей.
Я так и делаю, вставляю свой код после </td></tr></table> до </xsl:template> и получается после каждой новости вставляется мой код. А мне нужно чтобы он был только внизу.
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: BaceH от 21 Февраля 2012, 13:07:12
Вы очень не внимательны.
Вы вставляете свой код в шаблон который обрабатывает item"ы метода lastlist
<xsl:template match="udata[@method = 'lastlist']//item">
поэтому ваш код отображается после каждой новости.
Вам необходимо указать Ваш код в после вызова шаблона <xsl:template match="udata[@method = 'lastlist']//item">.

PS название шаблона не указано сознательно.
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: aizul от 22 Февраля 2012, 14:22:12
Я в Юми не силен. Вы не могли бы показать конкретнее на примере.
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: BaceH от 22 Февраля 2012, 15:17:55
в основном шаблоне у вас есть вызов новостей, вот после этого вызова внедряйте ваша код.
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: aizul от 22 Февраля 2012, 17:50:58
У меня один шаблон для всех страниц. Отдельно для новостей нет.
Новости выводятся через макрос вывода контента.
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: BaceH от 22 Февраля 2012, 19:39:38
конкретнее на примере
	
<div class="right">
<xsl:apply-templates select="/result/user" />

<xsl:apply-templates select="document('udata://news/lastlist/(news)')" mode="right-column-news" />
<p>
тут вставляем желаемое
</p>

<xsl:apply-templates select="document('udata://emarket/getCompareList')" />
<xsl:apply-templates select="document('udata://vote/insertlast/')" />
<xsl:apply-templates select="document('udata://dispatches/subscribe/')/udata" mode="right" />
<xsl:apply-templates select="document('udata://banners/fastInsert/right_block/')/udata" mode="right" />
</div>
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: aizul от 24 Февраля 2012, 08:27:18
Вот мой шаблон:
<h2>
<xsl:value-of select="result/@header" />
</h2>

<xsl:apply-templates select="result" />

Так у меня выводится контент, в том числе и новости.
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: BaceH от 24 Февраля 2012, 13:26:44
какой вариант дэмо сайта вы выбрали когда устанавливали систему?
Выложите все содержимое файла шаблона
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: aizul от 24 Февраля 2012, 14:44:21
Магазин хомячков.
Вот шаблон:
<?xml version="1.0" encoding="utf-8"?>
<!--<!DOCTYPE xsl:stylesheet SYSTEM "ulang://i18n/smthng.dtd:file">
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xlink="http://www.w3.org/TR/xlink"
xmlns:umi="http://www.umi-cms.ru/TR/umi"
xmlns:html="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="xlink">

<xsl:include href="modules/content.xsl" />
<xsl:include href="modules/news.xsl" />
<xsl:include href="modules/photoalbum.xsl" />
<xsl:include href="modules/forum/common.xsl" />
<xsl:template match="/">


<html>
<head>

<link type="text/css" rel="stylesheet" href="/css/cms/style2.css" />
<meta name="description" content="{result/meta/description}" />
<meta name="keywords" content="{result/meta/keywords}" />

<title>
<xsl:value-of select="result/@title" />
</title>
<xsl:value-of select="document('udata://system/includeQuickEditJs')/udata" disable-output-escaping="yes" />
<script type='text/javascript' src='/js/prettyphoto/js/jquery.prettyPhoto.js'></script>
<link rel='stylesheet' type='text/css' href='/js/prettyphoto/css/prettyPhoto.css' media='screen' />
<script type="text/javascript" src="/js/prettyphoto_prepair.js"></script>

</head>

<body id="body">

<div id="menu">
<xsl:apply-templates select="document('udata://content/menu')/udata" />
</div>

      <div id="newsw">

        <div id="news">

          <dl>

            <dt>Ближайшее событие: <xsl:apply-templates select="document('udata://news/lastlist/(novosti)//1')/udata" mode="short_list"/></dt>

          </dl>

        </div>

      </div>
 
<div id="pagew">

      <div id="page">


        <div id="content">

<h2>
<xsl:value-of select="result/@header" />
</h2>

<xsl:apply-templates select="result" />


        </div>

      </div>

    </div>

<div id="footer">
</div>

</body>
</html>
</xsl:template>

</xsl:stylesheet>
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: BaceH от 24 Февраля 2012, 17:53:27
 <div id="newsw">

        <div id="news">

          <dl>

            <dt>Ближайшее событие: <xsl:apply-templates select="document('udata://news/lastlist/(novosti)//1')/udata" mode="short_list"/></dt>

          </dl>

        </div>
<!-- тут вставляйте ваш код -->
      </div>
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: aizul от 27 Февраля 2012, 08:36:18
Так не получится, новости у меня выводятся через <xsl:apply-templates select="result" />. А там где вы предложили это лишь вывод последней новости, а у меня есть отдельная страница.

Наверно я нечетко сформулировал задачу. В общем у меня один шаблон для всех страниц. Новости выводятся через макрос вывода контента xsl:apply-templates select="result". Нужно вывести html код только на странице с новостями. Для этого я правил шаблон news.xsl, но у меня после каждой новости выводился мой код, мне нужно чтобы было только один раз.
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: BaceH от 27 Февраля 2012, 10:43:35
	<xsl:template match="result[@module = 'news' and @method = 'rubric']">
<xsl:apply-templates select="document('udata://news/lastlist')/udata" />
<xsl:text> тут вставляйте ваш код </xsl:text>
</xsl:template>
Название: Re:Как правильно внедрить в шаблон html-код
Отправлено: aizul от 27 Февраля 2012, 15:40:31
Большое спасибо BaceH. Все отлично)