Дополнения modx: Готовые дополнения для MODX / MODX.im – Разработка дополнения для MODx Revolution. Часть 1 / Habr

Boilerplate / Готовые сайты, темы / Дополнения MODX / modstore.pro

Версия 1.0.8-pl

Дата выпуска 29.12.2019

Внимание, этот компонент требует версию PHP 5.6 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.

Внимание, этот компонент требует версию MODX не ниже 2.4 !

Список устанавливаемых дополнений
  • ClientConfig (конфигурация сайта)
  • FormIt (обработка форм, отправка заявок на электронную почту)
  • MIGX (для создания табличек у ресурсов)
  • TinyMCE Rich Text Editor (визуальный редактор)
  • translit (автоматическая транслитерация адресов страниц)
  • SEO Tab (настройка страницы для поисковых систем)
  • SEO Pro (настройка шаблона сайта в поисковой выдачи)
MODSTORE.PRO
  • Ace (лучший редактор кода)
  • AjaxForm (отправка форм через Ajax)
  • controlErrorLog (управление журналом ошибок)
  • MinifyX (автоматизированное сжатие скриптов и стилей сайта)
  • mixedImage (смешанная загрузка файла)
  • phpThumbOn (для изменения размера и сжатия изображения)
  • pdoTools (быстрая выборка страниц и пользователей сайта)
  • tinyCompressor (автоматическая оптимизация загружаемых файлов)

Ресурсы
  • Главная
  • Сервис
    • 403 (страница ошибки 403 «Доступ запрещен»)
    • 404 (страница ошибки 404 «Документ не найден»)
    • 503 (страница «Сайт недоступен»)
    • Карта сайта (HTML)
    • SiteMap (sitemap.xml)
    • Robots (robots.txt)

Чанки

Плагины
  • Boilerplate
    • привязывается CSS-файл к странице редактирования ресурсов (assets/boilerplate/mgr/manager.css)
    • сжимает вывод html для Google (можно отменить в системной настройке boilerplate_compress_output_html)
    • возможность спрятать вертикальный таб для tv(системная настройка boilerplate_hide_vtabs_tv)
    • модификаторы fenom:
      • alias (транслитерация строки)
      • m2 (модифицирует строку m2 в квадратные метры)
      • phone (убирает лишние символы)
      • table (модифицирует значение поля table в таблицу)
  • managerBreadCrumbs (хлебные крошки в админке)
Системные настройки
CORE
  • allow_multiple_emails = Да (чтобы у каждого пользователя была своя электронная почта)
  • friendly_alias_realtime = Да (генерация псевдонима в реальном времени)
  • friendly_urls = Да (включение дружественных URL)
  • friendly_urls_strict = Да (строгий режим)
  • publish_default = Да (по умолчанию ресурс создаётся опубликованным)
  • use_alias_path = Да (чтобы в URL учитывался псевдоним родителя, а не его замороженный URL)
  • friendly_alias_translit = russian (настройка транслитерации)
  • resource_tree_node_name = menutitle (чтобы названия ресурсов в дереве были покороче)
  • resource_tree_node_tooltip = alias (чтобы можно было понять, какой у ресурса адрес)
  • locale = ru_RU.utf8 (для генерации даты с названиями месяцев)
  • request_method_strict = Да (отключение доступа к странице по id)
  • unauthorized_page = {id} (id 403 страницы)
  • error_page_header = HTTP/1.0 404 Not Found (заголовок для 404 ошибки)
  • error_page = {id} (id 404 страницы)
  • site_unavailable_page = {id} (id 503 страницы)
  • log_deprecated = Нет

PDOTOOLS
  • pdotools_fenom_default = Да (использование Fenom в чанках)
  • pdotools_fenom_modx = Да (разрешаем MODX в Fenom)
  • pdotools_fenom_parser = Да (использование Fenom на страницах)
  • pdotools_elements_path = {core_path}/ (для загрузки файловых элементов)
TINYCOMPRESSOR
  • tinycompressor_tinypng_upload_enable = Да (сжимает загружаемые изображения)
TINYMCERTE
  • tinymcerte.plugins = advlist autolink lists modximage charmap print preview anchor visualblocks searchreplace code fullscreen insertdatetime media table contextmenu paste modxlink textcolor colorpicker
  • tinymcerte.toolbar1 = undo redo | styleselect | backcolor forecolor bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image
BOILERPLATE
boilerplate_compress_output_html = Да (сжимает вывод html для Google)
boilerplate_tpl_css ( шаблон загрузки css ) =
<link rel="preload" href="[[+file]]" as="style" onload="this.onload=null;this.rel='stylesheet'">
boilerplate_tpl_js (шаблон загрузки js) =
<link rel="preload" href="[[+file]]" as="script"><script src="[[+file]]" defer></script>
boilerplate_hide_vtabs_tv = нет

Другое

  • Установка HTTP заголовков
    • X-Frame-Options:deny
    • X-XSS-Protection:1;mode=block
    • X-Content-Type-Options:nosniff
    • Referrer-Policy:no-referrer
    • Cache-Control: max-age=31536000, must-revalidate
  • Удаляется файл changelog.txt, чтобы убрать сообщение о том, что безопасность сайта не в порядке
  • Переименовываются файлы ht.access в корне и в папке /core/, чтобы заработали дружественные URL
  • Меняем контент главного шаблона и делаем его статичным
  • Хуки для minifyX
    • libs.php (для загрузки библиотек)
    • ms2 (инициализации minishop2, для поддержки асинхронной загрузке скриптов)

modxNotes / Утилиты / Дополнения MODX / modstore.pro

Версия 1.2.1-pl

Дата выпуска 19.01.2020

Внимание, этот компонент требует версию PHP 5.6 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.

Внимание, этот компонент требует версию MODX не ниже 2.4 !

Компонент для создания заметок написанный на чистом js. Имеет простой и приятный интерфейс.

В комплект входит сниппет modxNotes для вывода заметок на фронт-энде.

События:

Вы можете писать свои плагины подписывая их на события. Все события получают одну переменную object с объектом заметки
  • mnOnBeforeCreateNote — Срабатывает перед созданием заметки.
  • mnOnCreateNote — Срабатывает после создания заметки.
  • mnOnBeforeUpdateNote — Срабатывает перед обновлением заметки.
  • mnOnUpdateNote — Срабатывает после обновления заметки.
  • mnOnBeforeRemoveNote — Срабатывает перед удалением заметки.
  • mnOnRemoveNote — Срабатывает после удаления заметки.

Спасибо за внимание.

modRelation / Каталог, Поиск, Фильтрация / Дополнения MODX / modstore.pro

Внимание, этот компонент требует версию PHP 5.4 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.

Внимание, этот компонент требует версию MODX не ниже 2.3 !

Описание работы:
Сниппет разделяет по словам поле, которое вы укажите в field (по умолчанию pagetitle), выбирает рандомное слово из массива слов и выполянет поиск по базе ресурсов с похожими словами. При правильном заполнении каталога получается вполне неплохая работа по перелинковке сайта и выводу похожих статей/товаров

Принимает на вход:

  • field — поле по которому будут искаться похожие ресурсы, можно использовать любые поля ресурса, если это не тв параметры по умолчанию pagetitle
  • separator — разделитель по которому будет делиться объекты для поиска по умолчанию пробел
  • limitWord — минимальная длина слова для поиска похожих ресурсов, по умолчанию 3
  • element — сниппет для вывода результатов, по умолчанию pdoResource
  • substr — отрезает количество символов у выбранного слова, т.е. если нужно отрезать три символа с конца слова пишите &substr=`-3`, если с начала слова, то &substr=`3`
Далее просто передаете парметры нужные для сниппета elements, принцип работы по типу pdoPage

Примеры вызова:

Простой вызов для msProducts

[[!modRelation? 
  &element=`msProducts`
  &parents=`0`
  &sortby=`RAND()`
]]

Со всеми параметрами:
[[!modRelation? 
  &field=`pagetitle`
  &separator=` `
  &limitWord=`3`
  &element=`msProducts`
  &parents=`0`
  &tpl=`tpl_product_row`
  &sortby=`RAND()`
  &substr=`-3`
]]

Пример использования для статей и обычных ресурсов:
[[!modRelation? 
  &parents=`0`
  &sortby=`RAND()`
  &tpl=`@INLINE [[+pagetitle]]`
]]

Сниппет работает как с продуктами minishop2 так и с обычными ресурсами

PayAndSee / Каталог, Поиск, Фильтрация / Дополнения MODX / modstore.pro

Внимание, этот компонент требует версию PHP 5.4 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.

Внимание, этот компонент требует версию MODX не ниже 2.3 !

[PayAndSee] — реализует закрытый контент на MODX Revolution. Создание контента и тарифов, клиентов и подписок на контент, подписка на контент через оплату любым методом [miniShop2], а также через в админку сайта.

Видеообзор от OpenModx


Особенности:

  • работа только с новым miniShop2 (version =>2.4.0-beta2)
  • сниппет для вывода контента pas.content
  • сниппет оформления заказа pas.order
  • сниппет вывода оформленного заказа pas.get.order
  • сниппет вывода подписок pas.subscription
Все сниппеты компонента работают при помощи [pdoTools] и рассчитывают на использование [Fenom] в чанках.
Подписка возможна на любой ресурс, товар, тикет и тд.

Демо: PayAndSee
Доки: Документация PayAndSee

[Установка]
Для работы вам нужен MODX не ниже 2.3 и PHP не ниже 5.4.
— Установите pdoTools — это библиотека для быстрой работы с БД и оформлением, необходима для многих компонентов
— Установите miniShop2 — это магазин на основе которого реализован функционал заказов и оплаты
— Установите Theme.Bootstrap — это тема оформления Twitter Bootstrap для MODX, под неё заточены стандартные чанки
— Установите PayAndSee

[Обновление]
Компонент полностью переписан,ни о каком обновлении со старой версии не может быть и речи.
У кого стоит предыдущая версия, деинсталлируем и устанавливаем/ настраиваем новую.

[Основное]
Основная панель управления находятся в отдельном разделе сайта, доступном через меню.
Содержит следующие вкладки:

[Контент]
Вкладка, на которой собран контент. Доступна сортировка по статусу контента и поиск.

Для создании контента необходимо указать ресурс к которому он будет привязан. Тарифы и подписки контента будут доступны после его сохранения.

[Тарифы]
Вкладка, на которой собраны тарифы контента. Доступна сортировка по контенту, сроку действия тарифа и поиск.

Для создании тарифа необходимо указать стоимость, контент к которому он будет привязан и срок подписки.

[Клиенты]
Вкладка, на которой собраны клиенты. Доступна сортировка по статусу и поиск.

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

[Подписки]
Вкладка, на которой собраны подписки. Доступна сортировка по клиенту, контенту, статусу и поиск.

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

[Статусы]
Вкладка, на которой собраны статусы. Доступна сортировка по классу.

Для создании статусы необходимо задать название и выбрать класс. Указать флаг активности и разрешения.
Дефолтные статусы:

* новый — задается при создании
* активен — характеризует активность
* неактивен — характеризует неактивность

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

[Оповещения]
Вкладка, на которой собраны оповещения. Доступна сортировка по классу и поиск.

Оповещение срабатывает в момент смены статуса сущности.
Для создании оповещения необходимо указать класс и статус. Задать почту, тему и тело сообщения.

Для каждой сущности определены методы getClientEmails и getManagerEmails
Результат набивается в переменные:

* $client_email — почта клиента
* $manager_email — почта менеджера

Таким образом вы можете просто указать $client_email|join и для сущности клиент это будет почта клиента, для сущности контент это будет почта всех клиентов с активной подпиской на данный контент и тп.

[Настройки]
Настройки PayAndSee расположены в Системные настройки > PayAndSee

[Основные]
Содержит основные настройки:

* working_templates — активные шаблоны. Список id шаблонов через запятую, для которых нужно активировать функционал.
* front_css — файл с css для подключения на фронте.
* front_js — файл с javascript для подключения на фронте.
* client_groups — группы регистрации клиентов, через запятую.
* email_manager — почтовые адреса менеджеров, через запятую.

[Заказ]
Содержит настройки необходимые для заказа:

* order_handler_class — имя класса, который реализует логику оформления заказа.
* order_delivery_id — идентификатор способа доставки [miniShop2], который используется при оформлении заказа.
* order_resource_id — идентификатор страницы заказа, на которой происходит оформление заказа.

[Службы]
Покупка и оформление заказа реализовано своим классом, в конечном счете заказ будет
сформирован и его можно будет увидеть в интерфейсе заказов [miniShop2]

[Заказ]
Процессом оформления заказа занимается специальный класс PasOrderHandler, который реализует интерфейс PasOrderInterface.
Конечно, вы можете подключить собственный класс для заказа и указать его в системной настройке order_handler_class

[Корзина]
Не реализован.

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

[Оплата]
Стандартный [miniShop2]

Пример оформления и покупки можно увидеть тут pas.vgrish.ru/kupit.html?content=1

[События]
Актуальный список доступен в документации docs.modx.pro/components/payandsee/development/events

[Доступ]
Доступ определяется наличием разрешающих статусов у [контент], [клиента], [подписки]
Подписка также имеет дату начала/окончания действия что тоже учитывается при определении доступа.

Для проверки доступа добавлены два модификатора:

* pas_content_access — проверка доступа к контенту. Синоним pascaccess
* pas_resource_access — проверка доступа к ресурсу. Синоним pasraccess

1 параметр — значение по дефолту
2 параметр — идентификатор контента / ресурса. По умолчанию текущий ресурс.
3 параметр — идентификатор клиента. По умолчанию текущий клиент.

[Примеры]

— Закрыть свободный доступ для поля content

{$content|pasraccess}

— Закрыть свободный доступ для поля content и вывести форму покупки платного контента

{$content|pasraccess:('pas.content'|snippet:['resource'=>$id])}

— Проверить наличие доступа у текущего клиента к ресурсу 15 и записать в переменную

{set $access = 1|pasraccess:0:15}

{* далее можно использовать для проверки доступа переменную $access *}

{if $access}
Есть доступ
{else}
Нет доступа
{/if}

[Демо сайт]
Доступен демо сайт pas.vgrish.ru
Логин и пароль для входа в test

TVTable / Утилиты / Дополнения MODX / modstore.pro

Внимание, этот компонент требует версию PHP 5.3 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.

Внимание, этот компонент требует версию MODX не ниже 2.3 !

TVTable — это ТВ-параметр в виде таблицы, в которой можно менять количество не только строк, но и столбцов.

UPD:
Теперь таблица выглядит так:
И поддерживает лексиконы!
Можно использовать чанки

Использование сниппета:

[[TVTable?
  &tv=`id TV`
  &id=`id ресурса`
  &classname=`Классы таблицы`
]]

Так же, можно появились 2 параметра — getX и getY, которые позволяют получить значение из ячейки таблицы
Важные изменения
  • Редизайн компонента
  • Из компонента выпилен jQuery
  • Теперь нет привязки к количеству колонок и строк таблицы, т.е. теперь можно создать даже одну ячейку
  • Есть обратная совместимость
  • Появилась возможность удалять определенные столбцы
  • Появилось несколько параметров <cut/>
    • Максимальное количество столбцов

      Примечание: Существующие значения не будут изменены и в том случае, если количество столбцов в существующих данных будет больше указанного лимита, то у пользователей будет возможность удалять столбцы до указанного лимита.

    • Максимальное количество строк

      Примечание: Существующие значения не будут изменены и в том случае, если количество строк в существующих данных будет больше указанного лимита, то у пользователей будет возможность удалять строки до указанного лимита.

    • Количество столбцов

      Примечание: Имеет приоритет над свойством «Максимальное количество столбцов». Существующие значения не будут изменены и в том случае, если количество столбцов в существующих данных будет больше указанного лимита, то у пользователей будет возможность удалять столбцы до указанного лимита, а если количество столбцов будет меньше указанного лимита, то при следующем редактировании будет добавлено недостающее количество столбцов.

    • Количество строк

      Примечание: Имеет приоритет над свойством «Максимальное количество строк». Существующие значения не будут изменены и в том случае, если количество строк в существующих данных будет больше указанного лимита, то у пользователей будет возможность удалять строки до указанного лимита, а если количество строк будет меньше указанного лимита, то при следующем редактировании будет добавлено недостающее количество строк.

    • Заголовки столбцов
    • Ширина полей в пикселях

Сниппет
  • В параметр tv теперь можно указывать не только ID, но и название TV
  • Теперь выводится thead, параметр head (По умолчанию: включен)
  • Добавлены свойства bodyClass и headClass для добавления CSS-классов в tbody и thead соответственно
  • Параметр classname переименован в tableClass (но classname всё равно будет работать)
  • Изменено поведение сниппета при указанных getX и getY
    • Если указать только getX, то на выходе получим таблицу с указанной строкой
    • Если указать только getY, то на выходе получим таблицу с указанным столбцом
    • Если указать и getX и getY, то на выходе получим содержимое указанной ячейки по координатам
    • Также в них кроме индекса можно указывать first и last

Несколько примеров для наглядности:
&getX=`last` // Вывод последней строки
====================
&getY=`last` // Вывод последнего столбца
====================
&getY=`first` // Или 0, вывести первый столбец
====================
&getX=`first` // Или 0, вывести первую строку
====================
&getX=`last`
&getY=`last` // Вывести содержимое ячейки которая находится по координатам: последняя строка, последний столбец
====================
&getX=`1`
&getY=`last` // Вывести содержимое ячейки которая находится по координатам: вторая строка, последний столбец
====================
&getX=`last`
&getY=`2` // Вывести содержимое ячейки которая находится по координатам: последняя строка, второй столбец

Важно! При обновлении будьте внимательны, из чанка теперь убран <tbody>

Баги и прочее
  • Исправлен баг когда в БД записовался пустой массив в случае если таблица была пустая, теперь если все поля таблицы пустые, то в БД ничего не записывается
  • Исправлен баг с кнопкой удаления столбца, теперь она будет появлятся и исчезать
  • Добавлена кнопка для очистки таблицы, системная настройка tvtable_clear_button (По умочанию: выключена)

Видео с демонстрацией кейсов

Автор основной версии — Яна Вострякова.
Автор последних правок — Баха Волков.

customBS3 / Готовые сайты, темы / Дополнения MODX / modstore.pro

Внимание, этот компонент требует версию PHP 5.3 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.

Внимание, этот компонент требует версию MODX не ниже 2.4 !

Базовая тема на HTML5Boilerplate с кастомизированным Bootstrap 3.
Демо: cbs.demo.devdevel.net.
В пакет входят шаблоны, чанки, пара сниппетов.
Префиксы
  • шаблонов — tpl.cbs
  • чанков — cbs.
  • сниппетов — cbs
Кастомизированный Bootstrap 3 содержит
  • >12 цветов,
  • Разметка, «сетка» (на основе списков),
  • Разметка, «плитки» (аналог Masonry),
  • Иконки Font-Awesome,
  • Адаптивные таблицы,
  • Таблицы dataTable,
  • Адаптивные табы,
  • Дополнительные навигационные бары (+фиксированное меню после прокрутки),
  • Информационные бары,
  • Новые кнопки,
  • Дополнительные панели,
  • Дополнительные стили alerts,
  • Дополнительные модальные окна,
  • Дополнительные подвалы,
  • Дополнительные Well-блоки,
  • Простое и многоуровневое меню (в теме используется pdoMenu)
  • Секции Callout,
  • Разделители блоков,
  • Хронология (Timeline),
  • Кастомные form select (Bootstrap Select),
  • Включен ScrollToTop,
Все примеры хранятся в шаблонах.
Вырезаны из Bootstrap 3
  • Карусель
  • Иконки
Дефолтные стили для навигационных баров, модальных окон, панелей, кнопок и прочего — остались.
Всё, что не нравится или хочется изменить, можно переопределить в своём файле стилей.
Также в тему входят сниппеты: cbsCanonical и cbsCopyright, их вызовы есть в чанках cbs.head и cbs.footer.
В теме используется pdoTools, устанавливается пользователем.
Контактная информация:
devdevel.net

Немного скриншотов:

Навигационное многуровневое меню

Плитки

Сетка

Селекты

Кнопки

Аккордеон

Табы

Хронология (Timeline)

Разделители

Модальное окно (вообще их 10 вариантов + дефолтное)

Панели

Секции Callout (призывы к действию)

Информационные бары

Well-блоки

Подвал

После покупки и оценки, просим оставить отзыв.

Обсуждение темы в сообществе MODX.PRO

modClassVar / Утилиты / Дополнения MODX / modstore.pro

Внимание, этот компонент требует версию MODX не ниже 2.3 !

Данный компонент — небольшая альтернатива ТВ полям со своими плюсами и минусами.
В админке представлен в виде таба:

Тут же можно создавать и редактировать переменные. Данная вкладка грузится как для ресурса, так и для пользователя. Не составит особого труда подгрузить панель и к кастомному классу.
<cut/>

Панель переменных
Открывается по нажатию на «шестеренку», доступно создание и редактирование переменных:

  • задать значение по дефолту,
  • конфигурацию поля extjs,
  • ограничение для вывода поля.

Панель значений переменных
Основная рабочая панель, открыта при загрузке страницы.

Собственно редактирование переменной.

Получение переменных
Значения переменных выставляются в плейсходеры вида:

[[!+имя_переменной.название_поля_переменной]]

Например:
[[!+google_place.value]]

Более удобно, конечно, использовать пакет pdoTools и Fenom.
Получить все переменные ресурса можно так:
{var $data = $.mcv->getValues($_modx->resource.id)}
{$data.google_place}

Доступные типы переменных:
  • textfield,
  • textarea,
  • numberfield,
  • modx-combo-boolean,
  • modx-combo-user,
  • modclassvar-combo-user,
  • modclassvar-combo-users,
  • modclassvar-combo-autocomplete,
  • modclassvar-combo-option,
  • modclassvar-combo-datetime,
  • modclassvar-combo-file,
  • modclassvar-combo-resource,
  • modclassvar-combo-resources,
  • modclassvar-combo-ymaps-place,
  • modclassvar-combo-gmaps-place.

Проект на Github.
Обсуждение компонента в сообществе MODX.PRO.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *