Создание компонентов MODX /

Рассылка по расписанию

Последнее занятие будет самым коротким. Неожиданно обнаружилось, что мы уже всё сделали, и осталось только добавить скрипт отправки писем по расписанию.

На всякий случай напоминаю алгоритм работы компонента:

  1. Создаём рассылку и указываём ей свойства. Обязательно указать шаблон или сниппет.

  2. Добавляем пользователей (или они добавляются самостоятельно, через сайт)

  3. На странице очереди писем добавляем новые, путем выбора рассылки. В зависимости от того, что в ней указано, текст письма генерируется сниппетом или шаблоном.

  4. Отправляем письма. Можно вручную, из админки, или скриптом, по расписанию.

Всё, кроме скрипта мы уже сделали.

Читать далее
Личный блог /

Еще курсы?

Наш первый курс по создаю компонентов для MODX подходит к концу — осталось всего одно занятие.

Мне, в принципе, понравилось. От читателей жалоб тоже не видно, значит можно продолжать.

Вопрос, нужны ли еще курсы, и если да — то какие?

У меня пока только одна идея — переделать minishop2.com с нуля. Могу описать весь процесс натягивания шаблона, вызов типовых сниппетов, настройки поиска, фильтров и оплаты и т.д.

Вопрос задаю заранее, чтобы распланировать свой график на январь.

Читать далее
Создание компонентов MODX /

Самостоятельная подписка и отписка пользователя

Мы плавно подходим к окончанию разработки компонента и проведения уроков. Сегодня не будет ничего нового просто делаем самостоятельную подписку и отписку пользователя.

Для этого нужно будет добавить новое поле code в объект sxSubscriber (для ссылки "отписаться от рассылки"), прописать в классе sxNewsletter новые методы для проверки почты и подписки\отписки и добавить обработку этих действий в сниппет Sendex.

В общем, ничего интересного, обычное программирование на PHP.

Читать далее
Создание компонентов MODX /

Сниппет Sendex и формы подписки\\отписки

На прошлых занятиях мы закончили написание административного интерфейса нашего компонента и теперь переходим на фронтенд.

Нам нужено организовать возможно самостоятельной работы авторизованным пользователям с подписками. Определяем минимальный функционал:

  1. Вывод формы подписки на определенную рассылку — её мы укажем по id

  2. Если юзер уже подписан — тогда показываем форму отписки

  3. При том и другом действие происходит отправка писем с кодом, для подтверждения

  4. При переходе по коду, его ловит плагин и выполняет что нужно

Для сниппета мы будем использовать pdoTools. Во-первых, это быстро и удобно, а во вторых велика вероятность, что он уже установлен на сайте. Если же нет — нужно предусмотреть и автоматическую установку, при инсталляции пакета.

Читать далее
Путешествия /

Германия: фотостудия Iris Noir

На третий день поездки во Франкфурт мы пошли на работу пригласившей стороны. Этой самой стороне, по имени Ирина, нужно было срочно забацать фотосесию дорогих украшений.

Не то, чтобы они были из брилиантов, просто ручная работа и какие-то непростые кристаллы. Я в этом плохо понимаю, но зато смог ознакомиться с бытом небольшой немецкой фотостудии, которая принадлежит нашим русским друзьям.

Читать далее
Личный блог /

Новый раздел на сайте - "Утилиты"

Давно чесались руки сделать что-то по настоящему полезное на сайте. Например, раздел с утилитами, которые можно было бы использовать каждый день.

И вот встречайте — новый раздел Утилиты, в котором уже есть проверка JSON строк.

В отличии от своего идейного вдохновителя, здесь строки парсятся не javascript, а настоящим json_decode(), и строку можно указывать сразу в параметре ?json=, например вот так.

Сама форма работает через AjaxForm, можно использовать Ctrl+Enter для отправки.

Если вам понравилась идея — пишите чего бы еще подобного сделать, чтобы не сильно сложно, но полезно.

Читать далее
Путешествия /

Германия: Дорога домой

Ездили мы на неделю, с 25го ноября по 1е декабря. Собственно, и первую в жизни визу нам выдали на эти числа. Хочешь — не хочешь, а первого числа нужно свалить из страны.

Утром воскресенья, с тяжелым сердцем, мы запаковали чемоданы и поехали в аэропорт Франкфурта. Руки были постоянно заняты, поэтому фотографий мало.

Читать далее
Создание компонентов MODX /

Пишем интерфейс: таблица очереди писем

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

Логика работы такая:

  1. У нас есть рассылка

  2. К ней прикреплены подписчики

  3. Нужно взять рассылку, сгенерировать письмо и поставить в очередь

  4. Один подписчик — одно письмо для каждой рассылки

  5. После создания письма его можно удалить или отправить

В итоге у меня получилась вот такая таблица:

Читать далее
Путешествия /

Германия: Поездка в Висбаден

На второй день отпуска мы поехали в столицу земли Гессен — город Висбаден.

Населения там в 2 раза меньше, пешеходных зон еще больше, а архитектура старее и интересней. Ну а ехать от Франкфурта всего 40 минут по автобану.

Наверное, я никого не удивлю, если скажу, что в Германии отличные дороги? Родина Mercedess, BMW, Porche и Audi просто не может иметь плохих дорог!

Да и с климатом тут, конечно, попроще. Перепадов от -35 до + 35, как у нас в Сибири — не бывает.

Читать далее
Путешествия /

Германия: день первый - Франкфурт

25го числа, мы с женой поехали таки в заслуженный отпуск на неделю.

Так как, за границей ни разу не были, решили что нужно ехать туда, где друзья. Ну, чтобы встретили, погуляли и отправили обратно. Потому что ездить во всякие там Египты и ОАЭ страшновато (я там никого не знаю!) да и незачем, пожалуй.

Хороший друг живет во Франкфурте-на-Майне, туда и полетели.

Читать далее
Создание компонентов MODX /

Пишем интерфейс: окно редактирования подписки

На прошлом занятии мы сделали таблицу подписок и окно создания.

Теперь нам нужно добавить окно изменения подписки, и сложность здесь в управлении подписчиками — нам нужно окно с вкладками.

На первой те же поля, что и при создании, а на второй — добавление и удаление пользователей.

Для работы с пользователями, нужно написать свои процессоры: выборка, поиск и добавление\удаление к подписке.

Читать далее
Тонкости и трюки /

Выбор первых картинок из контента

Вариант с использованием properties.

Используется в плейсхолдере например так

<img   src="[[+properties.first_img_src.0]]" >

Плагин нужно выставить для события OnBeforeDocFormSave

Читать далее
futuris
Futuris
16.03.2023 17:04
Ок, вижу \core\vendor\vesp\core\src\Controllers Спасибо!
futuris
Futuris
14.03.2023 16:04
Была папка tmp, и удалял и переустанавливал ее - все без толку. Выше товарищ правильно написал, что ...
inetlover
Александр Наумов
22.02.2023 19:10
Спасибо! Да, мне здесь подучиться нужно.
bezumkin
Василий Наумкин
19.02.2023 19:49
Не такая уж тут активность в комментриях, чтобы что-то снижать - а удобнее будет, в первую очередь м...
inetlover
Александр Наумов
19.02.2023 15:12
Спасибо!
inetlover
Александр Наумов
06.02.2023 00:48
Ок, спасибо!
inetlover
Александр Наумов
28.01.2023 18:27
Классно, все работает!
inetlover
Александр Наумов
24.01.2023 18:31
Понял, спасибо!
inetlover
Александр Наумов
16.01.2023 16:41
Понял, спасибо!
bezumkin
Василий Наумкин
14.01.2023 05:16
Да, мне тоже нравится Vite и он по умолчанию используется в Vue 3 и Nuxt 3. Более того, он вроде как...