[Анонс] MigxPageConfigurator (лонгрид)

Приветствую. Публикую этот анонс, чтобы посмотреть по комментариям интересно ли моё творение кому-то, кроме @Павел Бигель, ну и чтобы на форуме был какой-то движ, кроме вопросов и ответов. Важное замечание, дальше будет многа букав и не будет ни адной картинки (их как-то не очень удобно вставлять да и нету).

Предпосылки.
К идее создания данного компонента меня подтолкнули несколько факторов.
Во-первых, бывали случаи, что неумелые руки контент-менеджеров, наполняющих сайты, в том числе, используя визуальные редакторы а-ля Tiny MCE, ломали вёрстку сайта.
Во-вторых, заказчики порой хотят иметь возможность что-то менять на своих сайтах: добавлять и удалять блоки, менять порядок блоков, создать новую страницу, используя уже имеющиеся, но с другим содержимым.
В третьих, на этапе сдачи проекта, находят опечатки, или просят что-то дописать/изменить, например, вместо Отправить написать Заказать. И когда это одно два исправления, то нестрашно, а иногда ведь заказчик это компания, где решение принимают коллегиально, и сегодня они по совещались и решили так, а завтра вернулся генеральный и решил иначе. В итоге вроде и несложно, и времени уходит немного, но оно мне надо? Пусть лучше у них будет возможность всё править самостоятельно, я лишь покажу где и как.
В-четверых, когда придумал как избавиться от трёх предыдущих болей, возникает новая: повторение одних и тех же манипуляций из проекта в проект: перенести контент в админку (не показывать же совсем пустой сайт), расставить плейсхолдеры, написать вызовы сниппетов, формы настроить. А со сниппетами отдельная боль, у некоторых параметров вагон, надо каждый раз в доку лезть, вызов составлять, а большинство ведь типовые. Тут кто-то может возразить, мол возьми из предыдущих проектов. Как будто бы я помню в каком из предыдущих проектов и в каком конкретно шаблоне искать этот вызов. И в этот момент, думаешь:
хорошо бы указать какой сниппет нужен и с какими параметрами, и пусть сам он запишется в нужном месте.
Собственно «Велосипед»
И тут мы плавно переходим к предлагаемому мной решению озвученных проблем. Суть его вот в чём.
Вся вёрстка делится на типовые блоки, я называю их секции и в вёрстке обозначаю тэгом section. Каждая секция состоит, как правило, из типовых элементов: текстовых полей, ссылок, списков, картинок, форм. Эти элементы могут быть скомбинированы как угодно. Я для себя выделил определенный список часто используемых элементов, который будет появляться в админке после установки компонента.
Также, как правило, рисуют и верстают не все страницы, а конкретные шаблоны.
Получается секция состоит из простых полей, а шаблон — это набор секций. Вот с ними мы и будем работать. Под каждый файл шаблона будет создан шаблон в админке, это нужно для хранения типовых наборов секций ака шаблонов, чтобы можно было посмотреть как должна выглядеть та или иная страница. Содержимое секций пишется в поле типа migx. Migx это основа всего компонента, если бы его не было, стоило бы его создать. Код секций будем хранить отдельно в виде чанков, т.е. кусков HTML с тэгами Fenom. Из них скрипт при сохранении конкретного ресурса будет по шаблону собирать пререндер будущей страницы и сохранять его в файл. Имя файла — это id ресурса, соответственно подключать его мы будет обычным include. Возможно не очень понятно объяснил, но на релизе будут примеры.

Применение.
Задача разработчика при использовании MigxPageConfigurator сводится к тому, чтобы с помощью специальных data-атрибутов указать из каких тэгов брать значения для каких полей, куда вставлять вызовы сниппетов, что нарезать в чанки, где заинклюдить, где распарсить и т.д. Атрибутов насчитывается около двух десятков (хотя я не считал, просто добавлял по мере необходимости), не очень много, но нужно будет запомнить какие для чего. Однако, в целом, всё интуитивно понятно, во всяком случае, я на это рассчитываю. Практические примеры напишу, чтобы наглядно продемонстрировать как, где и какой атрибут применять.
Затем нужно в консоли запустить всего одну команду и случится магия: весь контент окажется в админке, будут созданы секции, будут написаны вызовы сниппетов. По поводу вызовов сниппетов отмечу отдельно, что в комплекте будут идти используемые мной вызовы, если их будет недостаточно, можно будет написать свои.
Кроме того, чтобы обновить контент не нужно даже в админку лезть, надо просто выполнить ту же команду. А если контент трогать не нужно, а изменить вёрстку надо, то просто убираем лишний аргумент из той самой универсальной команды. Зная название секции можно обновить только секции в этим названием. А зная название секции и её id(записывается в админке) можно обновить одну конкретную секцию.

Нерешённые проблемы.
Единственный момент, который мне не удалось как-то решить это повторение секций в разных шаблонах. Например есть секция с картинкой и текстом. И картинка, и текст на разных страницах разный, но вёрстка под них одинаковая. Так вот если в одном шаблоне, где используется эта секция, изменить её, например, добавить класс text-primary заголовку текста, а потом пойти в другой шаблон и в аналогичной секции обновить контент, то добавленный класс из итогового варианта вёрстки пропадёт. Т.е. изменения вёрстки надо делать сразу во всех шаблонах, использующих данную секцию.

Немного о нюансах.
Для демонстрации и хранения конфигурации шаблонов создаётся специальный раздел Типы страниц, где каждому ресурсу соответствует определенный шаблон. При создании действительной страницы сайта ей нужно присвоить необходимый шаблон, сохранить, а потом снова сохранить, чтобы скопировалась типовая конфигурация. Да, это костыль, который я не знаю как обойти. С другой стороны два раза нажать на кнопку не так уж и трудно)))
Также можно восстановить стандартные значения для конкретной секции в конкретном шаблоне, отметив соответствующий чекбокс в настройках секции и сохранив ресурс. Но это я уже в дебри полез. Там ещё предусмотрена возможность создания сквозных секций, отключение отдельных секций, особое внимание уделено работе с формами и контактами. Но об этом расскажу когда соберу свой скрипт в пакет. Что касается сборки, то тут ещё много вопросов по резолверам, уповаю на помощь более опытных коллег.

Заключение.
На этом пока всё. Надеюсь данным анонсом мне удалось вас хоть немного заинтересовать.

P.S. Пока планирую сделать компонент бесплатным, так как не думаю, что он будет безумно популярен в сообществе, но это проблема сообщества, я личность творческая, мне главное — творить)))
Артур Шевченко
12 октября 2022, 11:40
modx.pro
1 671
+10
Поблагодарить автора Отправить деньги

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

Алексей Смирнов
12 октября 2022, 11:53
0
Сравнивал ли скорость создания одного и того же сайта с конфигуратором и без него?
    Артур Шевченко
    12 октября 2022, 12:24
    +1
    Нет, я все дедлайны прое**л потому что допиливаю компонент походу натяжки((( Так что конкретно сейчас он только мешает, но перед релизом проверю.
      Алексей Смирнов
      12 октября 2022, 12:53
      0
      У меня такое же c дедлайнами было когда пилил сайт на magicThemes в прошлом году (пилил сам движек MT и параллельно тестировал на продакшене).
      Ок, будем ждать.
    deleted
    12 октября 2022, 17:27
    0
    повторение одних и тех же манипуляций из проекта в проект: перенести контент в админку (не показывать же совсем пустой сайт), расставить плейсхолдеры, написать вызовы сниппетов, формы настроить
    Делаю так: есть прототип сайта, на котором есть почти всё, что может понадобиться (разные секции, магазин и т.д.), тестовый контент, формы. Потом просто делаю его копию, удаляю лишнее, переделываю вёрстку под макет
      Артур Шевченко
      13 октября 2022, 11:20
      0
      И как это избавляет тебя от расстановки плейсхолдеров, написания сниппетов и настройки форм? А ещё, порой заказчики хотят, чтобы контент был не какой-то произвольный, а тот который они давали дизайнеру. В общем, твой подход имеет место быть, но он неуниверсальный. Про возможности управления структурой страниц из админки даже не спрашиваю.
      Максим
      13 октября 2022, 20:36
      0
      Возможно не очень понятно объяснил, но на релизе будут примеры.
      +++
        Din
        Din
        14 октября 2022, 12:10
        0
        Звучит как интересное дополнение. Надеюсь на скорый релиз
          vectorserver
          16 октября 2022, 18:40
          0
          Все твои хотелки есть во FRED, и там есть функция экспорта твоих собранных тем.

            Олег Захаров
            16 февраля 2024, 23:05
            +1
            Попробовал Fred на тестовом сайте. Понравилась реализация. Но как только попробовал перенести чанки, оказалось что в элементах при добавлении кода на fenom он в редакторе элемента нормально добавляется, но при добавлении на фронтенде через fred код ломается — в коде меняется => на "=gt;". И итогом код fenom не работает. И как оказалось fenom во Fred не поддерживается. Как блин так!
            И как оказалось с Fred много проблем и вопросовтут).
            Печаль блин.
            Так что ждем от вас ребят конструкторы тем, большую работу делаете.
              Артур Шевченко
              17 февраля 2024, 13:36
              0
              Мой компонент только феном и поддерживает. Сейчас пилю вторую версию, там будет редактирование с фронта, парсинг любых полей ресурса.
                Олег Захаров
                17 февраля 2024, 13:38
                0
                Ждем, круто!
                  Артур Шевченко
                  17 февраля 2024, 13:44
                  0
                  Ага, чувствую им так же как и первой версией кроме меня никто пользоваться не будет)))
                Олег Захаров
                17 февраля 2024, 13:38
                +1
                во FRED попробовал вставлять код в элемент как чанк в формате [[$chunk]], а fenom прятать внутрь, вроде работает
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              13