Для разработчиков
Защита дополнений в деталях
Приветствую. Эта заметка будет полезна скорее для уже состоявшихся авторов компонентов, но возможно начинающим тоже будет полезно изучить механизм и позволит стать будущими авторами дополнений, если ещё в раздумьях.
Не так давно некоторые дополнения на modstore.pro обзавелись защитой. Дополнения можно по прежнему устанавливать из репозитория, но если попробовать скопировать архив с пакетом на другой сайт, то установить ничего не получится. И это было сделано не спроста, так как наглости некоторых людей нет предела, пришлось предпринять меры.
Следом авторам платных дополнений разослали инструкцию о том, каким образом встроить подобную защиту в собственные дополнения. Стоит отметить, что с первого раза сделать по инструкции (несмотря на простоту) не получилось в силу особенностей применяемого варианта сборки пакета. Пришлось разбираться досконально и выяснять, как и что в MODX работает, чтобы сделать это “правильно” и надежно.
Прежде чем продолжить, стоит ознакомиться с специальным методом сборки пакетов – «Сборка transport-пакета без установки MODX». Инструкция написана в далеком 2015 году, однако описанный метод работает до сих пор. Отличие в том, что подход не требует установки MODX для сборки пакета, т.е. сборку запустить можно откуда угодно, имея только исходники пакета и xPDO.
Детали внутри.
Предложения по MODX
Коли уж так случилось, что MODX активно взялись совершенствовать, предлагаю озвучить предложения и пожелания для повышения функциональности и гибкости. Я уже давно для себя отметил несколько моментов, которые упростили бы разработку. Давайте пробежимся по ним.
"text/javascript" в дополнениях
Можно всех попросить не добавлять
Валидатор ругается. И HTML4 уже ушёл
К 2.6.Х добавил isssue. Pull-request не прокатил
type="text/javascript"
в regClientStartupScript и regClientScriptВалидатор ругается. И HTML4 уже ушёл
К 2.6.Х добавил isssue. Pull-request не прокатил
Про изоляцию условий модификаторов от парсера MODX Revolution
Как многие знают, парсер MODX Revolution при работе с модификаторами, имеет одну неприятную особенность, которая иногда сводит на нет их применение. Проблема в том, что при использовании условных модификаторов типа [[*id:is=`1`:then=`выполнить_что_либо`]] код находящийся в условии будет обработана парсером, вне зависимости от того, истинно ли было утверждение или ложно. Данный момент не является критичным, можно вообще не пользоваться модификаторами. Но вот появилось немного времени, стало интересно подумать и разобраться в вопросе, и возможно предложить какое-то решение. Небольшой дисклеймер, будет довольно много букв.
Пожалуйста, давайте 2.6 будет последней версией MODX Revolution второй ветки
Перевод оригинальной заметки Thomas Gautvedt (@OptimusCrime), активного разработчика ядра MODX.
Ниже список дат выпусков для каждой (основной) версии MODX Revolution с тех пор, как Revolution вышел из беты. Дополнительно приведено количество прошедших дней с предыдущей версии.
Прокачиваем навык программирования на Fenom
Информация для разработчиков. Сложность средняя.
Практически все разработчики MODX используют тот или иной шаблонизатор. Большинство в рунете сделали свой выбор в пользу Fenom. Благодаря Василию конечно. Этот шаблонизатор достаточно простой и лёгкий. И его функционала хватает для решения практически всех своих задач. В этой статье мы посмотрим на него немного под другим углом и попробуем его возможности расширения.
Практически все разработчики MODX используют тот или иной шаблонизатор. Большинство в рунете сделали свой выбор в пользу Fenom. Благодаря Василию конечно. Этот шаблонизатор достаточно простой и лёгкий. И его функционала хватает для решения практически всех своих задач. В этой статье мы посмотрим на него немного под другим углом и попробуем его возможности расширения.
Использование модификаторов Fenom в PHP
Заметка коротенькая, но может быть полезной.
Все знают, что мы можем добавлять собственные модификаторы Fenom на событие pdoToolsOnFenomInit. А как быть, если мы хотим потом использовать этот же модификатор не в чанках и шаблонах, а в своих PHP скриптах?
А очень просто:
Все знают, что мы можем добавлять собственные модификаторы Fenom на событие pdoToolsOnFenomInit. А как быть, если мы хотим потом использовать этот же модификатор не в чанках и шаблонах, а в своих PHP скриптах?
А очень просто:
$pdoTools = $modx->getService('pdoTools');
$string = 'Some very very long string';
if ($truncate = $pdoTools->getFenom()->getModifier('truncate')) {
$string = $truncate($string, 10);
}
return $string;
Здесь мы получаем модификатор truncate и обрезаем строку до 10 символов, если она больше. Как подружить Tickets и TinyMCE
Разрабатывая свой очередной (аж второй :) ) проект на Modx Revolution столкнулся со странностью поведения сниппета Tickets (tickets-1.6.16-pl ): при создании тикета не появлялась стандартная панелька Modx с кнопками сохранения, отмены и помощи в правом верхнем углу админки. Вот так выглядит админка при создании нового тикета: кнопок нет, полос прокрутки нет.
Погуглив я обнаружил, что неодинок в своих проблемах: этот вопрос неоднократно поднимался даже на этом ресурсе. Вариантов решения аж 2 (из комментариев к тем записям):
Но неужели ничего нельзя сделать? Давайте попробуем разобраться под катом.
Погуглив я обнаружил, что неодинок в своих проблемах: этот вопрос неоднократно поднимался даже на этом ресурсе. Вариантов решения аж 2 (из комментариев к тем записям):
Но неужели ничего нельзя сделать? Давайте попробуем разобраться под катом.
modNodejs - Интеграция Nodejs в MODx
Всем доброе утро. Сегодня представляю на всеобщее обозрение компонент над которым я потел последние несколько дней.
Заголовок говорит сам за себя, это интеграция Nodejs в MODx.
Так зачем он нужен? Для realtime! Как сказал Николай: «технологии диктуют».
Простейший пример: в minishop2 поступил заказ, а менеджер гуляет по админке\сайту, вот что он увидит:
Без перезагрузки страницы и тд, можно выполнить любой js по наступлению эвента.
Заголовок говорит сам за себя, это интеграция Nodejs в MODx.
Так зачем он нужен? Для realtime! Как сказал Николай: «технологии диктуют».
Простейший пример: в minishop2 поступил заказ, а менеджер гуляет по админке\сайту, вот что он увидит:
Без перезагрузки страницы и тд, можно выполнить любой js по наступлению эвента.
Собственные модификаторы Fenom
Продолжаю разработку новой версии modstore.pro и хочу поделиться простым способом подключения своих модификаторов.
Обычный способ все знают: нужно создать сниппет, который будет принимать переменные $input и $options и вызвать его в чанке вот так:
Обычный способ все знают: нужно создать сниппет, который будет принимать переменные $input и $options и вызвать его в чанке вот так:
{$variable | snippet}
Но- Сниппеты бывают совсем небольшие и создавать их на каждый чих не хочется
- Вызов сниппета, это всё-таки дополнительная нагрузка
- Лично я уже полностью перешел на файлы, и создавать запись в БД для сниппета, только ради его связи с файлом мне совсем не хочется