В разделе «Репосты» расположены чужие статьи, которые мне понравились или показались полезными.
В статьях указаны источники. Цель этого раздела — сохранить статьи, которые могут в будущем пригодиться. Ведь сайты могут просто пропасть — их могут заблокировать, владелец может забыть продлить хостинг или домен, а статья-инструкция может пригодится именно в самый неподходящий момент.
Подписка пользователей при регистрации в MODX.
15 июня 2015, 09:36
Обратился заказчик с заданием — подписывать пользователей на рассылку новостей при регистрации. Сайт работает на MODX revolution и используется компонент Sendex. Написал небольшой сниппет — subscription, который подключается через параметр &postHooks сниппета Register, компонента Login. В свою очередь, сниппет subscription, имеет один единственный параметр &idnewsletter, в котором передаётся ID рассылки.
Читать дальше
Читать дальше
[Console 2.0.4-beta] Циклические запросы в консоли MODX
11 июня 2015, 10:52
Сегодня вышла новая версия дополнение Console для MODX.
Обновление коснулось возможности отправлять повторные циклические запросы на сервер и выполнять один и тот же код несколько раз — до тех пор, пока все, что вам нужно не будет обработано.
Читать дальше
Обновление коснулось возможности отправлять повторные циклические запросы на сервер и выполнять один и тот же код несколько раз — до тех пор, пока все, что вам нужно не будет обработано.
Читать дальше
ID документа для алиаса
08 июня 2015, 09:32
В последнее время стало «модным» использовать в алиасе документа его ID и отказаться от расширений, типа: .html, .php и т.д. Вместо, допустим, такой ссылки:
Для указания, в качестве алиаса, ID документа в MODX revolution напишем плагин на событие OnDocFormSave.
Читать дальше
mysite.ru/section/parent/myresource-alias.html,получить такую ссылку:
mysite.ru/section/parent/12345.В этом небольшом топике речь пойдёт именно об этом, ну и конечно реализация.
Для указания, в качестве алиаса, ID документа в MODX revolution напишем плагин на событие OnDocFormSave.
Читать дальше
[shopStats] Панель статистики интернет-магазина
25 марта 2015, 16:42
[shopStats] — виджет с краткой статистикой интернет-магазина
Установка:
1. Скачать transport.zip с github.com/tanaevr/shopStats
2. Загрузить в core/packages
3. Перейти в Приложения / Установщик и выбрать «Искать пакет локально», далее установить.
4. Перейти в Панели и добавить в активную панель виджет «shopStats»
Панель настроена на статистику из minishop2, в дальнейшем через нее можно будет так же видеть статистику shopkeeper версий 2 и 3. Так же планируется добавить настройку выводящихся данных.
Читать дальше
Установка:
1. Скачать transport.zip с github.com/tanaevr/shopStats
2. Загрузить в core/packages
3. Перейти в Приложения / Установщик и выбрать «Искать пакет локально», далее установить.
4. Перейти в Панели и добавить в активную панель виджет «shopStats»
Панель настроена на статистику из minishop2, в дальнейшем через нее можно будет так же видеть статистику shopkeeper версий 2 и 3. Так же планируется добавить настройку выводящихся данных.
Читать дальше
Модель безопасности в MODX
23 сентября 2014, 19:02
Модель безопасности в MODX не самая очевидная. Хотя в MODX присутствуют примитивы, присущие, например, модели безопасности SQL, их предназначение в MODX несколько отличается.
При настройке безопасности конечной целью является дать каждому пользователю соответвующий набор привилегий – разрешить ему совершать определенные действия в системе. Действия могут совершаться над различными объектами: страницами (resource), контекстами (context), чанками (chunk), переменными шаблонов (TV) и т.д. Сами действия могут быть очень разными, в простейшем случае это создание, просмотр, редактирование и удаление. Таким образом, задача настройки безопасности сводится к заданию отношений между пользователями, объектами и привилегиями.
Читать дальше
При настройке безопасности конечной целью является дать каждому пользователю соответвующий набор привилегий – разрешить ему совершать определенные действия в системе. Действия могут совершаться над различными объектами: страницами (resource), контекстами (context), чанками (chunk), переменными шаблонов (TV) и т.д. Сами действия могут быть очень разными, в простейшем случае это создание, просмотр, редактирование и удаление. Таким образом, задача настройки безопасности сводится к заданию отношений между пользователями, объектами и привилегиями.
Группы пользователей
Предположим, мы хотим дать пользователю partner доступ к странице «Проекты» на редактирование. В этом примере объектом является страница «Проекты», привилегией – редактирование, а пользователем – partner. Но для того, чтобы реализовать такую схему безопасности, потребуется создать группу пользователей. Дело в том, что в MODX права назначаются именно группе, а не пользователю. Группа – это множество пользователей, обладающих схожими правами. Разумеется, пользователь может состоять в нескольких группах.Читать дальше
Вызов кешируемых и некешируемых сниппетов в примерах
17 июня 2014, 11:08
В данном топике рассмотрим различные примеры вызова сниппетов, и как это сказывается на кешировании.
Для начала сразу уточним, что есть два метода вызова сниппетов:
Принципиально именно в процессе выполнения сниппетов программно, или на уровне синтаксиса, разницы нет. Это именно если говорить про выполнение кода сниппета, и если не брать во внимание кеширование и выполнение кешированных элементов. Если же говорить про кеширование, то сразу забегая вперед, скажу, что разница есть, если мы хотим кешировать результат, так как метод $modx->runSnippet() — это операция без учета кеша, то есть результат вызываемого таким образом сниппета всегда будет не из кеша, а реально выполняемый.
Читать дальше
Для начала сразу уточним, что есть два метода вызова сниппетов:
- Прописать MODX-тег, типа [[snippet]] — кешируемый сниппет, или [[!snippet]] — некешируемый сниппет.
- Вызвать выполнение сниппета через API MODX, то есть $modx->runSnippet('snippet');
Принципиально именно в процессе выполнения сниппетов программно, или на уровне синтаксиса, разницы нет. Это именно если говорить про выполнение кода сниппета, и если не брать во внимание кеширование и выполнение кешированных элементов. Если же говорить про кеширование, то сразу забегая вперед, скажу, что разница есть, если мы хотим кешировать результат, так как метод $modx->runSnippet() — это операция без учета кеша, то есть результат вызываемого таким образом сниппета всегда будет не из кеша, а реально выполняемый.
Читать дальше
Обновление MODX Revolution 2.0.8 до версии 2.2.x
09 июня 2014, 17:02
Сегодня проводил обновление сайта на MODX Revolution 2.0.8 до версии 2.2.5 и хочу поделиться опытом, может кому пригодится.
Для начала проблема: нельзя 2.0.8 обновить сразу до версии 2.2.5 в автоматическом режиме (если у кого-то есть другое мнение, с радостью выслушаю). Со времен 2.0.х не только удалили много деприкативного кода, так еще и добавили много всего, и изменения коснулись не только файловой системы, но и в базе данных много изменений появилось.
В связи с этим увидел только один вариант: развернуть новый сайт и перенести туда все из старого. И как оказалось, это не так уж и сложно оказалось сделать. Здесь вам phpMyAdmin в помощь. Но успех переноса обратнопропорционален привычке вносить изменения в сторонние пакеты (в том числе и в базовые настройки пакетов).
Читать дальше
Для начала проблема: нельзя 2.0.8 обновить сразу до версии 2.2.5 в автоматическом режиме (если у кого-то есть другое мнение, с радостью выслушаю). Со времен 2.0.х не только удалили много деприкативного кода, так еще и добавили много всего, и изменения коснулись не только файловой системы, но и в базе данных много изменений появилось.
В связи с этим увидел только один вариант: развернуть новый сайт и перенести туда все из старого. И как оказалось, это не так уж и сложно оказалось сделать. Здесь вам phpMyAdmin в помощь. Но успех переноса обратнопропорционален привычке вносить изменения в сторонние пакеты (в том числе и в базовые настройки пакетов).
Читать дальше
Как не чистить кэш всего сайта?
21 мая 2014, 15:13
Постоянно задают вопросы «а как при сохранении чистить кэш не всего сайта, а только обновляемого ресурса?». А вот так:
Читать дальше
<?php switch($modx->event->name) { case 'OnDocFormRender': $resource->set('syncsite', 0); break; case 'OnDocFormSave': if ($modx->event->params['mode'] != 'upd') {return;} $resource->_contextKey = $resource->context_key; $cache = $modx->cacheManager->getCacheProvider($modx->getOption('cache_resource_key', null, 'resource')); $key = $resource->getCacheKey(); $cache->delete($key, array('deleteTop' => true)); $cache->delete($key); break; }
Читать дальше
Правильный хостинг для MODX Revolution — Текстовая версия
18 мая 2014, 19:03
Видео можно посмотреть здесь: http://ilyaut.ru/video/hosting-for-modx/
Предлагаю вашему вниманию вторую версию инструкции по созданию собственного хостинга для сайтов на MODX Revolution и не только.
На сей раз я заснял и смонтировал видео всего процесса, постарался от души. Можно скачать в ультра-мега качестве (FullHD 1920x1080x25, 785mb).
Читать дальше
Предлагаю вашему вниманию вторую версию инструкции по созданию собственного хостинга для сайтов на MODX Revolution и не только.
На сей раз я заснял и смонтировал видео всего процесса, постарался от души. Можно скачать в ультра-мега качестве (FullHD 1920x1080x25, 785mb).
Читать дальше
Пара фокусов с xPDO
18 мая 2014, 16:01
В ходе одного исследования выяснил несколько интересных вещей про xPDO, о которых раньше не задумывался или некогда было проверить. Решил немедленно поделиться.
Выборка 1000 ресурсов
В чем же разница?
Читать дальше
Выборка 1000 ресурсов
$q = $modx->newQuery('modResource', array('id:>' => 0)); $q->limit(1000); $q->prepare(); $q->stmt->execute(); $res = $q->stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($res as $v) { //echo $v['modResource_pagetitle']; }Этот код работает за 0.042197227478 и занимает 33.3 Mb памяти.
$q = $modx->newQuery('modResource', array('id:>' => 0)); $q->limit(1000); $res = $modx->getCollection('modResource', $q); foreach ($res as $v) { //echo $v->get('pagetitle'); }А этот уже за 2.15289998055 и занимает 78.3 Mb памяти.
В чем же разница?
Читать дальше