UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: alex от 19 Апреля 2011, 21:37:57

Название: Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: alex от 19 Апреля 2011, 21:37:57
Установил Юми, при установке выбрал интернет-магазин (но сам магазин мне вообще не нужен!), просто модули все установлены.
Вобщем сейчас пытался с час вывести контент, но не получилось.

В предыдущем шаблоне все было просто
<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 чтобы добиться нужного результата.

Остался вопрос с блогом.
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: admin от 20 Апреля 2011, 09:25:15
для вывода последних постов из всех блогов используем макрос %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>

писал сходу, код не проверял так что не факт, что опечатку не сделал где-нибудь)
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: alex от 07 Мая 2011, 22:51:34
спасибо большое. жду ответа еще на две темы...вскоре мои вопросы закончатся...и первый сайт на юми будет поднят! 8)
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: john от 17 Октября 2011, 13:37:30
Проблема с интернет магазином.

Правлю шаблон /xslttpls/layout/default.xsl
Необходимо в разделе каталога /shop/ вывести собственный контент.
Этот код ничего не выводи <xsl:apply-templates select="result" />

Перепробовал кучу кодов, например:
<xsl:apply-templates select="result" mode="page"/>
выводит все  и html код в том числе.

Зайдя в раздел  катаога например DVD техника выводит товар.
Этим же шаблоном.

Почему нет контента?
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: admin от 17 Октября 2011, 13:39:15
пользуешься demodizzy?
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: john от 17 Октября 2011, 13:56:52
http://help.umi-cms.ru/install.site_choice.gif второй который
Полнофункциональный демо интернет магазин  -   DVD Техника -  Аудиотехника - Телевизоры - Мобильная связь
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: admin от 17 Октября 2011, 14:00:34
скорее всего, тебе поможет последнее сообщение в этой ветке    
Re:Не могу разобраться с xslt шаблоном  (http://umihelp.ru/forum/index.php/topic,43.msg1673.html#msg1673)
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: john от 17 Октября 2011, 15:03:36
Не выводит.

1. в шаблоне /xslttpls/layout/default.xsl вызываю кодом <xsl:apply-templates select="result" />

2. в шаблоне /xsltTpls/modules/catalog/special-offers.xsl код:

   <xsl:template match="result[@pageId][@request-uri = '/']" mode="header">
      <h1 class="best" umi:element-id="{@pageId}" umi:field-name="h1" umi:empty="&empty-page-name;">
         <xsl:value-of select="@header" />
      </h1>
   </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="udata" mode="special-offers">
      <div class="catalog">
         <div class="objects" umi:element-id="{page[@parentId &gt; 0]/@parentId}" umi:module="catalog" umi:method="getObjectsList" umi:region="list" umi:add-method="none">
            <xsl:apply-templates select="page" mode="short-view">
               <xsl:with-param name="cart_items" select="document('udata://emarket/cart/')/udata/items" />
            </xsl:apply-templates>
         </div>
      </div>
   </xsl:template>

вставляю код сюда:
<xsl:template match="result[@module = 'content'][@method = 'content']">
  <div id="text">
    <xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes" />
  </div>
</xsl:template>
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: admin от 17 Октября 2011, 15:11:26
ты привет много разных кусков кода что и где выводит, а что не выводит не понятно, я правильно понимаю что тебе на главной (которая является каталогом) надо вывести текстовое содержимое ? если да то ты в шаблон

 <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
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: john от 17 Октября 2011, 15:16:55
На главное все выводится - http://ns.competentit.com.swteh.ru
Мне надо на другой странице раздела каталога:  http://ns.competentit.com.swteh.ru/produkciya/ тут не выводится вобще ничего


Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: admin от 17 Октября 2011, 15:24:40
в любом случае вопрос в шаблона, отключи все шаблоны каталога, оставь один какой-нибудь, если какой-то из существующих перекрывает, то тебе надо найти какой, впиши в конце концов разные цифры в каждый шаблоне, вот и посмотришь какой из них выводиться, а так я не могу тебе ничего подсказать.
Попробуй поправить шаблон category-view.xsl в нем происходит подгрузка основного шаблона для каталога и он пытается подгрузить товары (без описания) может тебе его править надо

<xsl:template match="/result[@method = 'category']">
<xsl:apply-templates select="document('udata://catalog/getObjectsList')" />
</xsl:template>
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: john от 28 Октября 2011, 11:09:18
Подскажите как вывести контент указанной страницы?

Использовал этот скрипт <xsl:apply-templates select="document('udata://content/(tekst_sleva)')"  mode="page"/>
спасибо
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: admin от 28 Октября 2011, 11:37:31
для вывода какого-нибудь поля можно использовать

<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/) там весь необходимый базис
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: john от 28 Октября 2011, 11:52:21
Спасибо)
Скачал книгу, будем изучать))
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: john от 09 Ноября 2011, 15:47:57
Как вывести на главной странице объекты каталога, у которых стоит галочка "Лучшее предложение"?

Сейчас в шаблоне выводится строчкой: <xsl:apply-templates select="result" />

А я хочу вывести и привязать к своему шаблону mode="luchwee predlojenie"
<xsl:apply-templates select="document('udata://catalog/getCategoryList/(shop)/')" mode="luchwee predlojenie"/>

Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: admin от 09 Ноября 2011, 19:19:14
выводить товары отмеченные галочкой лучше посредством протокола Usel, поищи на форуме били примеры и в официальной документации и в демо сайте demodizzy на главной товары выводятся как раз через usel протокол
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: john от 11 Ноября 2011, 12:27:08
Задача такова, на главной странице вывод товаров в три колонки, а на странице продукции в четыре колонки.
Можно ли использовать один шаблон, например в коде при выводе попробовать так указать?
<xsl:apply-templates select="result" 3 - колонки/>
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: admin от 11 Ноября 2011, 12:55:59
<xsl:apply-templates select="result" /> выводит текущую страницу, у тебя главная это каталог? если нет, то на главной тебе нужно вывести "Лучшие предложения" через usel протокол примерно так <xsl:apply-templates select="document('usel://bestofferts/')" mode="best_tovar"/>, где bestofferts это имя xml (должен лежать в папке /usel/) шаблона для выборки скольких-то товаров отмеченных галочкой "лучшие товары". не забыть сделать шаблон для результатов работы usel протокола с mode="best_tovar"? выводящий товары в 3 колонки.

А для каталога создать шаблон, который будет выводить в 4 колонки товары.

Или у тебя вопрос был в чем-то другом?
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: john от 15 Ноября 2011, 23:25:35
Есть контакт, все работает, все через usel сделал, как надо.
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: john от 26 Марта 2012, 00:43:49
В tpl вывести контент можно по шаблону "/somepage/" макросом
%content insert('/somepage/')%
А в xslt вывести контент можно так
<xsl:value-of select="document('upage://20.content')//value" disable-output-escaping="yes" />
Вывод контента страницы id которой 20, а шаблон прописать как-нибудь можно?
Название: Re:Вывод контента, последних постов блога. (интернет-магазин)
Отправлено: admin от 26 Марта 2012, 08:30:57
неверное заявление
Цитировать
В tpl вывести контент можно по шаблону "/somepage/" макросом
Код:

%content insert('/somepage/')%

на самом деле первый и едиственный параметр ммакроса %content insert()% это element_id_or_path (см. документацию http://help-dev.umi-cms.ru/content.insert.html)

А насчет вопроса про применение шаблона... если ты делаешь вызов протокола upage, то ты его делаешь уже внутри какого-то шаблона. Но если вопрос в том, как добавить дополнительно к результату работы протокола какой-нибудь див или другие html  элементы, то делаешь вместо
<xsl:value-of...>
такой код
<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>