Установил Юми, при установке выбрал интернет-магазин (но сам магазин мне вообще не нужен!), просто модули все установлены.
Вобщем сейчас пытался с час вывести контент, но не получилось.
В предыдущем шаблоне все было просто <xsl:apply-templates select="result" />
Однако тут СТООЛЬКО всего в одном default.xsl ,что как я и ожидал, пустой результ ничего не выдал.
Единственное чего добился -
<xsl:apply-templates select="result" mode="page"/>
ито выводит ТУПО ВСЁ, не воспринимает html коды, шпарит все подряд....лажа.
Итак...
1. Как мне напрямую обращаться к модулю content? Чтобы на каждой странице выводился ее контент, а не всякие каталоги и тп.
2. Как вывести последние несколько постов из модуль blog20, файл postlist.xml ?
Хочу разобраться в @method,@mode и тп, но как к ним обращаться ,а не прописывать их в шаблоне, я не знаю.
Мне кажется надо для result както указать, что мне нужен именно модуль контент, т.к. он явно пытается с каталогом работать...короче я запутался уже. Помогите!
--------------------------------------
пришлось перелопатить весь layots/default.xsl чтобы добиться нужного результата.
Остался вопрос с блогом.
для вывода последних постов из всех блогов используем макрос %blogs20 postsList()% описание тут http://help-dev.umi-cms.ru/blogs20.postsList.html#xsltDesc
lzk xslt шаблоны будем вызывать его такой строчкой <xsl:apply-templates select="document('udata://blogs20/postslist/')/udata" mode="last_posts"/>
а также пропишем шаблон для этого списка постов
<xsl:template match="udata[module='blogs20' and method='postslist']" mode="last_posts">
Вывод последних постов <br/>
<xsl:apply-templates select="items/item" mode="last_posts"/>
</xsl:template
>
<xsl:template match="udata[module='blogs20' and method='postslist']/items/item" mode="last_posts">
<xsl:param name="post_link" select="post_link" />
<xsl:param name="guide-list-name" select="@name" />
<xsl:variable name="date" select="document(concat('udata://system/convertDate/', publish_time, '/(Y-m-d%20H:i:s)'))/udata" />
<a href="{$post_link}"><xsl:value-of select="$guide-list-id" /></a>
<xsl:text> (</xsl:text>
<span umi:element-id="{@id}" umi:field-name="publish_time" umi:format="Y-m-d H:i">
<xsl:value-of select="$date" />
</span>
<xsl:text>)</xsl:text><br/>
<xsl:value-of select="cut" disable-output-escaping="no" /><br/>
</xsl:template>
писал сходу, код не проверял так что не факт, что опечатку не сделал где-нибудь)
ты привет много разных кусков кода что и где выводит, а что не выводит не понятно, я правильно понимаю что тебе на главной (которая является каталогом) надо вывести текстовое содержимое ? если да то ты в шаблон
<xsl:template match="result[page/@is-default = '1']" priority="1">
<xsl:apply-templates select="document('usel://special-offers/?limit=&specials-limit;')" mode="special-offers" />
</xsl:template>
вписываешь
<xsl:template match="result[page/@is-default = '1']" priority="1">
<xsl:value-of select=".//property[@name = 'descr']/value" disable-output-escaping="yes" />
<xsl:apply-templates select="document('usel://special-offers/?limit=&specials-limit;')" mode="special-offers" />
</xsl:template>
и не забывай что поле с текстом в разделе каталога называется не content, а descr
в любом случае вопрос в шаблона, отключи все шаблоны каталога, оставь один какой-нибудь, если какой-то из существующих перекрывает, то тебе надо найти какой, впиши в конце концов разные цифры в каждый шаблоне, вот и посмотришь какой из них выводиться, а так я не могу тебе ничего подсказать.
Попробуй поправить шаблон category-view.xsl в нем происходит подгрузка основного шаблона для каталога и он пытается подгрузить товары (без описания) может тебе его править надо
<xsl:template match="/result[@method = 'category']">
<xsl:apply-templates select="document('udata://catalog/getObjectsList')" />
</xsl:template>
для вывода какого-нибудь поля можно использовать
<xsl:value-of select=".//property[@name = 'h1']/value" disable-output-escaping="yes" />
но для этого мы должны вызывать этот код находясь на этой странице, если нам необходимо вывести поле не с текущей страницы (например со страницы с id = 30), то делаем так
<xsl:value-of select="document('upage://30.h1')//value" disable-output-escaping="yes" />
не забывай про то что у выпадающего списка например вывод значение будет не /value, a /value/item/@name
Ну и еще некоторые базовые тонкости не плохо было бы знать, почитай книгу Данила Кострова (http://www.umi-cms.ru/support/docs/xslt-umi-devbook/) там весь необходимый базис
В tpl вывести контент можно по шаблону "/somepage/" макросом
%content insert('/somepage/')%
А в xslt вывести контент можно так
<xsl:value-of select="document('upage://20.content')//value" disable-output-escaping="yes" />
Вывод контента страницы id которой 20, а шаблон прописать как-нибудь можно?
неверное заявление
В tpl вывести контент можно по шаблону "/somepage/" макросом
Код:
%content insert('/somepage/')%
на самом деле первый и едиственный параметр ммакроса %content insert()% это element_id_or_path (см. документацию http://help-dev.umi-cms.ru/content.insert.html)
А насчет вопроса про применение шаблона... если ты делаешь вызов протокола upage, то ты его делаешь уже внутри какого-то шаблона. Но если вопрос в том, как добавить дополнительно к результату работы протокола какой-нибудь див или другие html элементы, то делаешь вместо такой код
<xsl:apply-templates select="document('upage://20.content')//value" mode="html_field_value"/>
и добавляешь новый шаблон xsl для оформления этого результата:
<xsl:template match="value" mode="html_field_value">
какой-то набор текста и html до...
<xsl:value-of select="." disable-output-escaping="yes">
какой-то набор текста и html после...
</xsl:template>