Евгений Савицкий
С нами с 10 августа 2014; Место в рейтинге пользователей: #289Упрощаем работу с TV
            Продолжая тему, начатую Василием, предлагаю решение для упрощения работы с TV. Оно поможет тем, у кого логика сайта завязана на TV — запросы, фильтры и т.п. 
Решается эта задача созданием полей в таблице ресурсов и копированием в них значений TV.
        
        
        
    Решается эта задача созданием полей в таблице ресурсов и копированием в них значений TV.
Расширение любых таблиц MODX
            В очередной раз понадобилось изменить таблицу сайта, менять которую не предусмотрено.
Что обычно люди делают в таких случаях? Верно, редактируют ядро или нужный компонент, и больше их не обновляют. Но ведь это неправильно, и можно решить вопрос иначе.
Пишем обычный плагин, выставляем для него событие OnMODXInit и меняем модель для нужных классов системы или дополнений. Например, я добавил id менеджера в заказ miniShop2:
        
        
        
    Что обычно люди делают в таких случаях? Верно, редактируют ядро или нужный компонент, и больше их не обновляют. Но ведь это неправильно, и можно решить вопрос иначе.
Пишем обычный плагин, выставляем для него событие OnMODXInit и меняем модель для нужных классов системы или дополнений. Например, я добавил id менеджера в заказ miniShop2:
[pdoTools] Версия 2.1 - улучшения Fenom
            Привет друзья! Хочу представить вам новую версию pdoTools с улучшениями работы шаблонизатора Fenom.
С другой стороны, я не хочу придумывать очередной псевдоязык команд, типа
        
        
        
    Функциональность vs Безопасность
Я долго думал, как бы разрешить менеджерам запускать чанки и сниппеты, но при этом не пускать их к объектам MODX. Потому что, если включить системную настройку pdotools_fenom_modx, то любой менеджер сможет сделать в чанке вот так:{if $res = $modx->getObject('modResource', 1)}
	$res->remove();
{/if}Нам бы этого не хотелось, правда?С другой стороны, я не хочу придумывать очередной псевдоязык команд, типа
{runSnippet('name', [params => data])}или{'name' [params => data] | snippet}Поэтому я добавил специальную переменную {$_modx}, которая ссылается на небольшой безопасный класс, где есть только нужные менеджерам функции и свойства:- {$_modx->placeholders} — массив с системными плейсхолдерами
 - {$_modx->config} — массив с системными настройками
 - {$_modx->context} — массив (не объект!) с текущим контекстом
 - {$_modx->user} — массив (не объект!) с текущим пользователем
 - {$_modx->resource} — массив (не объект!) с текущим ресурсом
 - {$_modx->lexicon} — служба загрузки лексиконов
 - {$_modx->lexicon()} — функция для вывода строки из лексикона
 - {$_modx->runSnippet()} — запуск сниппета
 - {$_modx->runProcessor()} — запуск процессора
 - {$_modx->getChunk()} — вывод чанка
 - и т.д., смотрите исходник.
 
Публичное тестирование mxManager для iOS
            Привет, друзья!
Спешу поделиться новостью, что моё мобильное iOS приложение доступно для публичного тестирования через сервис TestFlight.

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

Чтобы принять в нём участие, и ознакомиться с ранней версией приложения, вам нужно:
- Проверить версию вашего устройства — требуется iOS 8.
 - Написать мне свой email (или просто отметиться в комментариях — я сам его посмотрю)
 - Установить приложение TestFlight из AppStore
 - Дождаться приглашения на участие в программе по почте
 - Открыть ссылку из письма на устройстве и установить mxManager через TestFlight.
 - Установить на свой сайт компонент mxManager из нашего или официального репозитория
 
Привязка встроенных объектов к кастомным
            В силу ряда причин, мне потребовалось в свой кастомный объект, имеющий свою таблицу в бд и наследующий xPDOSimpleObject, добавить привязку к стандартному объекту MODX. Например, modUser.
Сделать это с помощью aggregates и composites в схеме моего кастомного объекта не получилось (собственно, добавление в схему связи с нативным modx-объектом ни к чему не привело — связи не появилось). Я полагаю, это свзяано с тем, что в схеме modx.mysql.schema.xml свзяи с моим кастомным объектом как не было, так и нет.
        
        
        
        
    Сделать это с помощью aggregates и composites в схеме моего кастомного объекта не получилось (собственно, добавление в схему связи с нативным modx-объектом ни к чему не привело — связи не появилось). Я полагаю, это свзяано с тем, что в схеме modx.mysql.schema.xml свзяи с моим кастомным объектом как не было, так и нет.