Зачем в MODX шаблоны? Новый


У нас зашёл спор про шаблоны в MODX!
Я утверждаю, что на каждую отдельную сущность ресурса нужно делать отдельный шаблон, например я делаю шаблоны для «Главной», «Категории товаров», «Карточка товара», «Корзина», «Категория новостей», «Одна Новость». Это всё разные шаблоны.
А мой коллега утверждает, что в MODX достаточно одного шаблона. А контент можно выводить отталкиваясь от условия, например если class_key равен 'msCategory', то показываем вёрстку категории товаров, если class_key равен 'msProduct', то вёрстка карточки товаров.
Если id ресурса равен 75, то выводить категорию с новостями. И так далее…
Дайте развёрнутый ответ кто из нас прав и зачем в MODX шаблоны?!
Холивар!
26 сентября 2016, 14:08    Валентин   
1    554 +2

Комментарии (7)

  1. Максим 26 сентября 2016, 14:34 # +1
    Оба правы по-своему.

    В первом случае нет смысла на каждый чих создавать шаблон. Например, у меня есть шаблон «Категория товаров», в котором выводятся товары категории. И есть страница «Специальные предложения», которая внешне ничем не отличается от страницы категории, зачем для нее заводить отдельный шаблон?

    Во втором случае не получится использовать tv-параметры или плагины, которые привязаны к шаблону. Да и разбираться потом в куче условий тоже не очень. Хорошо если условия не сделаны на модификаторах, как нередко бывает.
    1. Дмитрий Касаткин 27 сентября 2016, 12:15 # +2
      Поддерживаю.
      В MODx «из коробки» реализована привязка TV-параметров к шаблонам, это основная причина разделять шаблоны по «отдельным сущностям ресурсов».
      Также я бы отметил в пользу разделения на шаблоны:
      — хоть незначительное, но увеличение времени генерации страницы с каждым новым условием в шаблонах/чанках, что плохо
      — все равно большую гибкость в настройках вывода, к примеру у вас 2 разных внешних вида страницы «товар», лежащие в одной и той же категории, имеющие один и тот же class_key и т.п.

      Но есть и минусы, например по-умолчанию в MODx дочерние документы создаются с таким же шаблоном, что и родитель. И если родитель страницы Новости будет в шаблоне «категория новостей», то и дети будут такие же. Мы решаем это плагином childDefaultTemplate, но да, нужно вручную в админке 1 раз это нстроить. Минусом считаю из-за того, что функционал «не коробочный» и теоретически можно забыть расставить настройки, из-за чего на production-сайте девочка-контент-менеджер не разберется с выбором нужного шаблона и получит неожаданно другой вид страницы во фронтенде.
      1. Максим 27 сентября 2016, 14:10 # 0
        Можно еще ограничить доступные для выбора шаблоны через контроль доступа, чтобы пользователи меньше путались.
        1. Дмитрий Касаткин 27 сентября 2016, 14:53 # 0
          Да я пока гуглил где мы давным-давно взяли плагин, нашел решение, доступное в настройках из коробки. Уже поставил в план задач «обновить базу знаний» по кастомизации форм админки.

          Возвращаясь к теме, вышесказанное еще одно подтверждение, что использовать встроенный функционал полезно, вместо того чтобы «наворотить» подобный функционал собственными IF-ами в шаблонах и чанках.
    2. Павел Романов 26 сентября 2016, 15:04 # +1
      Истина, как всегда, посередине ))
      Я обычно пляшу от удобства дальнейшей работы заказчика в админке.
      Если требуются какие-либо особые доп. поля, или хитрое оформление редактора и т. д., то выношу в отдельный шаблон.
      Таким образом для стандартного магазина получается «Главная страница», «Стандартная страница», «Категория», «Товар», «Новость, публикация» ну еще пара служебных.
      Корзину, поиск и все страницы, которые не требуют своих TV или какой-то особой верстки, делаю на «Стандартной странице» с условиями (обычно по ID) на Fenom.
      1. Сергей 26 сентября 2016, 18:52 # +1
        По-моему достаточно интересный вопрос. Сам стараюсь делать не больше 5-7 основных шаблонов.
        Но были на поддержке сайты с 15-30 шаблонами.
        Мне кажется, можно даже статью хорошую написать про правильную организацию шаблонов в MODX.
        1. Михаил 27 сентября 2016, 07:52 # 0
          Например для магазина я делаю Главная страница, страница категорий, страница товара, Корзина(почему отдельный, вывожу там например акции ну или еще что нить, что бы завлечь покупателя.), ну служебные и личный кабинет
          Вы должны авторизоваться, чтобы оставлять комментарии.