UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Axiomateria от 27 Апреля 2013, 16:25:42

Название: Как задействовать модуль Новости для простых статей без отображения даты
Отправлено: Axiomateria от 27 Апреля 2013, 16:25:42
Здравствуйте!
На сайте есть лента новостей и стандартный шаблоны для модуля "Новости" вывода ленты новостей (news-list.xsl) с анонсами и подробным содержанием каждой новости (news-item.xsl) удовлетворяют результатом. (пути к шаблонам как и в  "demodizzy").
Вопрос::
А если задействовать тот же модуль "Новости" для вывода на сайте статей и обзоров в таком же порядке как и лента новостей,
 но без отображения даты публикаций в ленте и подробном изложении статьи ?
Надо редактировать уже существующие шаблоны или создавать новые ?
Название: Re:Как задействовать модуль Новости для простых статей без отображения даты
Отправлено: admin от 28 Апреля 2013, 13:37:39
в любом случае надо либо редактировать шаблоны новостей (чтобы они выводили и новости и статьи) , либо создавать отдельные шаблоны для списка статей и для страницы статьи...

Я предпочитаю делать так, создаем подтип данных для ленты новостей и для новости (для списка статей и для статьи соответственно) в модуле "Шаблоны данных". Создаем новую ленту новостей и назначаем ей, созданный на предыдущем шаге, тип данных "Список статей", также создаем новости в ней и меняем у них тип данных на "статьи"

Затем делаем копии шаблонов для списка новостей и новости и добавляем в атрибуте match условие проверки type-id , чтобы для страниц у которых будет тип данных "список статей" был свой шаблон.

P.S. не забываем про mode, который приписывем к apply-template перебору все "статей" при выводе списка статей, иначе мы снова подхватим шаблон с выводом новости с датой (или наоборот, новости будут его подхватывать и у них пропадет дата)

P.P.S. надеюсь не сильно сумбурно написал
Название: Re:Как задействовать модуль Новости для простых статей без отображения даты
Отправлено: Axiomateria от 28 Апреля 2013, 14:01:57
в любом случае надо либо редактировать шаблоны новостей (чтобы они выводили и новости и статьи) , либо создавать отдельные шаблоны для списка статей и для страницы статьи...

Я предпочитаю делать так, создаем подтип данных для ленты новостей и для новости (для списка статей и для статьи соответственно) в модуле "Шаблоны данных". Создаем новую ленту новостей и назначаем ей, созданный на предыдущем шаге, тип данных "Список статей", также создаем новости в ней и меняем у них тип данных на "статьи"

Затем делаем копии шаблонов для списка новостей и новости и добавляем в атрибуте match условие проверки type-id , чтобы для страниц у которых будет тип данных "список статей" был свой шаблон.

Да, вот так я и сделал и даже в файле common.xsl подключил новые файлы с скопировнными шаблонами из новостных шаблонов для статейых и вот он ключевой момент:
Где или как  в строке
<xsl:template match="/result[@module = 'news'][@method = 'item']">
надо сделать это:
"добавляем в атрибуте match условие проверки type-id , чтобы для страниц у которых будет тип данных "список статей" был свой шаблон."

?
Название: Re:Как задействовать модуль Новости для простых статей без отображения даты
Отправлено: admin от 28 Апреля 2013, 14:44:21
посмотреть type id у типа данных который создали (например тип данных "Статья" = 111 )

затем правим match таким образом.
Во-первых, объединяем 2 предиката в один явно указывая чт омежду ними стоит and
<xsl:template match="/result[@module = 'news' and @method = 'item']"> 

Во-вторых, добавляем еще одно условие на проверку типа данных
<xsl:template match="/result[@module = 'news' and @method = 'item' and page/@type-id=111]"> 
Название: Re:Как задействовать модуль Новости для простых статей без отображения даты
Отправлено: Axiomateria от 28 Апреля 2013, 16:26:31
посмотреть type id у типа данных который создали (например тип данных "Статья" = 111 )

затем правим match таким образом.
Во-первых, объединяем 2 предиката в один явно указывая чт омежду ними стоит and
<xsl:template match="/result[@module = 'news' and @method = 'item']"> 

Во-вторых, добавляем еще одно условие на проверку типа данных
<xsl:template match="/result[@module = 'news' and @method = 'item' and page/@type-id=111]"> 

Я так и вставил в новый файл article-item.xsl (скопированный из news-item.xsl) и поменял на соответствующее   значение  type-id=129)

Но как же быть с выводом лентой статей ?
Я так понимаю, что в файле article-list.xsl (скопированный из news-list.xsl) и поменял на соответствующее значение  type-id=130)
надо вместо строки
<xsl:template match="/result[@module = 'news'][@method = 'rubric']">
вставить по логике
    <xsl:template match="/result[@module = 'news' and @method = 'rubric']">
    <xsl:template match="/result[@module = 'news' and @method = 'rubric' and page/@type-id=130]">

?
Название: Re:Как задействовать модуль Новости для простых статей без отображения даты
Отправлено: admin от 28 Апреля 2013, 21:02:58
да все верно, а также не забыть что в этом шаблоне вызывается перебор item элементов по отдельному шаблону который и отвечает в каком виде выводиться анонс новости... так вот у этого вызова и у шаблона отвечающего за вывод элемента списка статей надо добавить отдельный mode, который отличит ваши новые шаблоны от оригинальных, тех что для статей.
Название: Re:Как задействовать модуль Новости для простых статей без отображения даты
Отправлено: Axiomateria от 28 Апреля 2013, 21:22:33
да все верно, а также не забыть что в этом шаблоне вызывается перебор item элементов по отдельному шаблону который и отвечает в каком виде выводиться анонс новости... так вот у этого вызова и у шаблона отвечающего за вывод элемента списка статей надо добавить отдельный mode, который отличит ваши новые шаблоны от оригинальных, тех что для статей.

Так точно, уже заменил mode="news-list" на  mode="articles-list" и ещё тут добавил:
<xsl:template match="udata[@method = 'lastlist']" mode="articles-list"> - где изначально его в оригинальном шаблоне не было.
Название: Re:Как задействовать модуль Новости для простых статей без отображения даты
Отправлено: admin от 28 Апреля 2013, 21:24:59
то есть в итоге все получилось?
Название: Re:Как задействовать модуль Новости для простых статей без отображения даты
Отправлено: Axiomateria от 28 Апреля 2013, 22:07:18
Да, спасибо за содействие, всё получилось в итоге.
В первый раз такую операцию на XSLT делал, без Вас не справился бы!