Как лучше интегрировать верстку Landing Page на Modx?
Всем привет!
Есть landing на 10 экранов, который попросили после верстки посадить на cms, в которой можно было бы править все, что угодно. Выбрала modx, потому что знакома с ней давно, мне она нравится, но делала в основном на ней многостраничники и без возможности редактировать каждую строчку текста для контент-менеджера. Поэтому при интеграции на нее простого, но полностью редактируемого для км лэндинга столкнулась с вопросом, как сделать это лучше с точки зрения оптимизации (читала, что если все настраивать через доп. поля, то сайт будет тормозить сильно) и с точки зрения удобства.
Кто-нибудь может поделиться своим опытом со всеми плюсами и минусами?
В сети видела разные советы и через разбиение всех секций на отдельные ресурсы, а там редактирование их через доп. поля, и через разбиение всех секций на чанки и также через редактирование через доп. поля, и т.д. Но с секциями то понятно. Здесь, мне кажется, особой разницы нет. В любом случае это именно тот контент, что будет выводиться всегда на странице.
Меня этот вопрос стал беспокоить больше из-за модальных окон, а именно из-за количества контента в них. Хотелось бы, чтобы они как обычные страницы не грузились вместе с главной, а загружались только при вызове. Если делать их через чанки с редактируемыми доп. полями, чтобы такие окна км собирал сам через доп. поля к шаблону, то в любом случае все окна создадутся внутри страницы вместе с остальным контентом, тем самым увеличив время загрузки страницы. А если через ресурсы тогда? Просто в модальные окна контент из ресурсов я еще никогда не выводила. Одно дело - статичные страницы в ресурсах, на которые переходишь по ссылкам из меню, другое дело - лишь часть кода, разбитая на чанки для доп.полей.
Подскажите, пожалуйста, как лучше все это организовать?
Насчет всего ленда на данный момент остановилась на варианте: модальные окна с динамичным контентом создавать через доп.поля (сами шаблоны для каждого типа окон хранятся в чанках), как и добавляемые элементы в самих секциях. А остальные статичные элементы в секциях, которые не надо добавлять, а только править, типа заголовков, текста, картинок решила сделать через ClientConfig. Пока не знаю насколько хорош такой вариант будет. Для км, мне кажется, будет удобным. А вот как это скажется на скорости загрузки страницы, ибо что-то пишут в отзывах, что все подобные варианты сильно влияют на это.
Хранение информации и ее вывод на странице - разные вещи.
Есть лендинг на 10 экранов. Если инфы много, значит 1 экран - 1 ресурс. Если мало и там все просто, то можно использовать migx. Юзать ClientConfig для заголовков страниц и картинок - так себе затея. У вас есть 10 заголовков и 10 картинок. В ресурсах у вас есть для этого pagetitle и image (в итоге всего 2 поля, легко вызвать в шаблоне/чанке, легко обработать), а в ClientConfig-е придется создать 20 ключей. К тому же усложнится процесс редактирования блока, когда контент и картинки будут в ресурсе, а заголовок нужно будет править где-то в другом месте. Используйте ClientConfig для данных, которые будут одинаковы в каждом блоке (телефон, почта, адрес).
Вывод инфы - все зависит от того, что и куда нужно выводить. Все поп-апы можно вызывать аяксом, что бы они не грузили страницу (куча готовых библиотек). Все изображения оптимизировать (например тут: ) превьюшки делать через ptumb, а не css-ом размер менять. )) Сам контент, если его ну прям очень много, можно подгружать тоже аяксом (допустим, при скроле страницы).
Избегайте большой вложенности чанков, сложных условий. Лучше используйте femon, он работает шустрее. Не забывайте, что стандартный шаблонизатор работает наружу, то есть например при условии [[+id:is=`1`:then=`[[$da]]`:else=`[[$net]]`]], шаблонизатор возьмет код обоих чанков, а только потом выведет тот, что подходит под условие, как результат (если в чанках кода много) - более медленная загрузка страницы.
В самих экранах не так много инфы. Так что не думаю, что стоит разбивать экраны на ресурсы. Там текст и картинки + заголовок, можно оставить в чанках и менять через доп. поля для главной, разбив по категориям. Весь самый большой контент открывается в модальных окнах.
Например, в одном экране есть 7 элементов (картинка + ссылка), к ним идет 7 описаний соответственно, и все описания открываются в модальных окнах, текста на каждое описание по объему как на целую страницу. Сами элементы экрана (картинка + ссылка на окно) я сделала через доп. поля для главной страницы (1 элемент - 1 доп. поле Migx), чтобы клиент мог в два клика эти элементы добавлять. Также у меня сделаны модальные окна с описаниями - 1 окно - 1 доп. поле, чтобы клиент мог также в два клика создать целое окно с контентом по шаблону из чанка. И все бы хорошо, но при загрузке страницы (если шаблоны окон в чанках, а доп. поля сделаны для главной страницы) в нее генерируются также все окна (а их с таким большим контентом 12, и будут потом клиентом еще добавляться). Также через доп поля сделала слайды для слайдеров (там слайды с контентом, не с картинками). И все это, конечно, влияет на загрузку страницы. Поэтому я и задалась вопросом насчет того, как их лучше выводить, потому что прежде не приходилось делать ленды на модексе, да еще и с контентом в модалках вместо отдельных страниц (что на мой взгляд совсем неудобно).
ClientConfig приглянулся чисто удобством для км, который будет менять информацию на сайте, и потому что в самих экранах (не окнах) менять по сути то нечего, картинка и текст. Но вы правы, в этом случае и через доп. поля Migx можно, тут генерировать нечего и вложенности в чанках никакой нет, можно даже не создавать чанки-шаблоны для полей, а просто сам код вставлять при вызове.
Если не задействовать ClientConfig, тогда повторяющиеся элементы (а их всего 2 - телефоны и адрес) можно также через доп. поля сделать. Нет смысла использовать его только ради двух элементов. Есть смысл только, если вместо доп. полей использовать его для редактирования всего контента в экранах. Но, если с ним неудобнее в плане реализации, то тогда фиг с ним. Времени лишнего на лишние действия тоже, увы, нет. А в него сейчас все упирается.
Все поп-апы можно вызывать аяксом, что бы они не грузили страницу (куча готовых библиотек).
Можете что-то конкретное посоветовать? Желательно то, с чем просто и быстро разобраться (сейчас просто времени нет).
А если убрать все модалки в ресурсы и вызывать их через pdoResource или pdoPage?
Также же знаю, что с помощью Fancybox можно выводить содержимое ресурсов в модальные окна. Но не с Fancybox у меня что-то не получилось вывести в том виде, в котором нужно.
с помощью Fancybox можно выводить содержимое ресурсов
Комерческая лицензия на фансибокс стоит денег (не знаю, на сколько сильно вы с этим заморачиваетесь, но все же).
Могу посоветовать библиотечку magnific popup Умеет все, что захотите, и бесплатная.
А если убрать все модалки в ресурсы и вызывать их через pdoResource или pdoPage?
pdoPage - это обертка для вывода результатов работы того же pdoResource, но с постраничной разбивкой. Если вам пагинация не нужна, то хватит и просто pdoResource.
в нее генерируются также все окна (а их с таким большим контентом 12, и будут потом клиентом еще добавляться)
Вот, собственно, для этих целей и заюзайте аякс-подгрузку, и уберите из вызова все, что не должно отображаться на странице.
Если вы хотите перетащить все модалки в ресурсы, то вам не нужна migx-табличка, в которой вы сейчас создаете поля линк+картинка. Для каждого ресурса назначьте доп.поле с картинкой. С помощью pdoResource выводите в нужный блок картинку и линк, а с помощью magnific popup подтягивайте аяксом в поп-ап контент. Обратите внимание, что шаблон тоже будет тянуться в поп-ап, так что такие ресурсы лучше скрыть от поиска и задавать им пустой шаблон (тогда будут использоваться скрипты и стили текущей основной страницы, что вам и нужно).
Хорошо бы увидеть сайт/админку/код, чтоб лучше понимать, чем помочь. )
Если еще вопросы будут, пишите лучше в вк - vk.com/vizuri