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

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

Комментарии: 7

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

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

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

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

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