Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Модуль Меню - заголовки для блоков меню их поля "Название"

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 8
Просмотров: 3734
Последний ответ 06 Июнь 2014, 12:06:35
от admin
Многоуровневое меню PHP + Модуль меню

Автор StanlyBSVРаздел Шаблоны PHP

Ответов: 0
Просмотров: 90
Последний ответ 10 Август 2017, 20:42:18
от StanlyBSV
Модуль "Пользователи" и Loginza

Автор chiken_bobРаздел Разработка модулей

Ответов: 11
Просмотров: 6155
Последний ответ 10 Октябрь 2011, 15:33:48
от admin
Модуль "Файловый менеджер"

Автор aizulРаздел Настройка системы и модулей

Ответов: 3
Просмотров: 2156
Последний ответ 24 Апрель 2012, 21:39:01
от admin
Модуль "Отложенные товары" для UMI.CMS

Автор e.ioffeРаздел Разработка модулей

Ответов: 5
Просмотров: 3638
Последний ответ 09 Май 2014, 00:41:54
от e.ioffe

0 Пользователей и 1 Гость просматривают эту тему.

*

Axiomateria

  • ****
  • 320
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Здравствуйте!
На сайте есть лента новостей и стандартный шаблоны для модуля "Новости" вывода ленты новостей (news-list.xsl) с анонсами и подробным содержанием каждой новости (news-item.xsl) удовлетворяют результатом. (пути к шаблонам как и в  "demodizzy").
Вопрос::
А если задействовать тот же модуль "Новости" для вывода на сайте статей и обзоров в таком же порядке как и лента новостей,
 но без отображения даты публикаций в ленте и подробном изложении статьи ?
Надо редактировать уже существующие шаблоны или создавать новые ?
« Последнее редактирование: 28 Апрель 2013, 12:12:31 от Axiomateria »

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
в любом случае надо либо редактировать шаблоны новостей (чтобы они выводили и новости и статьи) , либо создавать отдельные шаблоны для списка статей и для страницы статьи...

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

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

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

P.P.S. надеюсь не сильно сумбурно написал
« Последнее редактирование: 28 Апрель 2013, 13:41:48 от admin »

*

Axiomateria

  • ****
  • 320
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
в любом случае надо либо редактировать шаблоны новостей (чтобы они выводили и новости и статьи) , либо создавать отдельные шаблоны для списка статей и для страницы статьи...

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

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

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

?

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
посмотреть 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]"> 

*

Axiomateria

  • ****
  • 320
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
посмотреть 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]">

?

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
да все верно, а также не забыть что в этом шаблоне вызывается перебор item элементов по отдельному шаблону который и отвечает в каком виде выводиться анонс новости... так вот у этого вызова и у шаблона отвечающего за вывод элемента списка статей надо добавить отдельный mode, который отличит ваши новые шаблоны от оригинальных, тех что для статей.

*

Axiomateria

  • ****
  • 320
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
да все верно, а также не забыть что в этом шаблоне вызывается перебор item элементов по отдельному шаблону который и отвечает в каком виде выводиться анонс новости... так вот у этого вызова и у шаблона отвечающего за вывод элемента списка статей надо добавить отдельный mode, который отличит ваши новые шаблоны от оригинальных, тех что для статей.

Так точно, уже заменил mode="news-list" на  mode="articles-list" и ещё тут добавил:
<xsl:template match="udata[@method = 'lastlist']" mode="articles-list"> - где изначально его в оригинальном шаблоне не было.

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
то есть в итоге все получилось?

*

Axiomateria

  • ****
  • 320
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Да, спасибо за содействие, всё получилось в итоге.
В первый раз такую операцию на XSLT делал, без Вас не справился бы!