Разделы

Прямой эфир

Весь эфир | RSS

Debian 6: Install MODX 2.2

5 секунд, и сайт установлен.
Ссылку дал мне @jkenters Jeroen Kenters на оригинал https://gist.github.com/1760731
Скачать скрипт
Описание: Debian 6: Install MODX 2.2 including user, virtual host, database
UPD. Добавленно видео

( Читать дальше )

[EVO] Событие при перемещении документа

По логике процесса понадобилось отслеживать перемещение документов. Проверил код модуля и оказалось, что при этом не генерируется никакого события. Нашел быстро Bug #2094 и еще пост на форуме. Может кому понадобится.

Добавляем события в таблицу:
INSERT INTO `modx_system_eventnames` (`id`, `name`, `service`, `groupname`)
VALUES
(1052, 'OnBeforeDocMove', 5, ''),
(1053, 'OnDocMove', 5, '')

Обновляем manager/processors/move_document.processor.php:
до строки 107
// invoke OnBeforeDocMove event
    $modx->invokeEvent("OnBeforeDocMove",
        array(
            'id'         => $_REQUEST['id'],
            'new_parent' => $_REQUEST['new_parent']
    ));

и после строки 113
// invoke OnDocMove event
    $modx->invokeEvent("OnDocMove",
        array(
            'id'         => $_REQUEST['id'],
            'new_parent' => $_REQUEST['new_parent']
    ));


При создании плагина не забываем поставить галочки напротив новых событий.

Также, не забывайте, что в MODx Evolution немало действий, на которые не генерируются события. Все они есть в баг-трекере, в том, или ином виде, достаточно правильно по-английски сформулировать поисковый запрос :)

[REVO] Быстрый старт с modExtra

Не все знают, что разработчики MODX Revo предусмотрели заготовку для быстрого создания компонентов под названием modExtra.

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

git clone http://github.com/splittingred/modExtra.git

А еще лучше, склонировать из моего форка, так как в нем сразу добавлен скрипт переименования, плюс исправлен баг с недостающим файлом functions.php.
git clone http://github.com/bezumkin/modExtra.git

После этого у вас появится директория modExtra, содержащая все необходимые файлы и структуру каталогов для быстрой разработки своего компонента.


( Читать дальше )

[EVO] Плагин для подмены содержимого документа

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

Получился такой вот плагин:

/* 
 * проверяем айди запрашиваемой страницы.
 * в моем случае — главной
 */
if ($modx->documentIdentifier==1) {
    /*
     * здесь нужно получить айди нужного документа для подмены 
     * в моём случае весьма специфично, поэтому этот шаг я опустил
     */
    $latestID =  100;
    $modx->documentIdentifier = $latestID;
    $modx->documentObject = $modx->getDocument($latestID, '*');
    /*
     * здесь получаем список TV-параметров для данного документа
     * опять же, у меня он свой
     */
    foreach ($modx->getTemplateVars(array('issue','pdf','cover'), '*', $latestID) as $tv) {
        $modx->documentObject[$tv['name']] = $tv['value'];
    }
}


Во вкладке System Events отмечаем наши любимые OnLoadWebDocument и OnLoadWebPageCache. И усё.

Похожего не нашел, поэтому сделал велосипед. Поправьте, может что упустил, и задавайте вопросы, если что не понятно.

UPD

Все проще гораздо:
if ($modx->documentIdentifier==1) {
    /*
     * здесь нужно получить айди нужного документа для подмены 
     * в моём случае весьма специфично, поэтому этот шаг я опустил
     */
    $latestID =  100;
    $modx->documentIdentifier = $latestID;
}


только событие другое — OnWebPageInit, в этот момент известен только documentIdentifier, а сами данные документа еще не подтянуты.

Работать нужно днем, а ночью спать. Иначе велосипеды получаются немного монстрообразные :)

MODX && Ajax

В последнее время участились вопросы «хочу сделать сайт на ajax», «как подгружать разделы через ajax» и тд.

Вообще, судя по всему, MODX настолько дружелюбный, что многие разработчики и не собирается учиться программировать. То есть, они требуют готового ответа (расширения) — вынь да положи. Ссылки приводить не буду, достаточно просто поглядеть в блог «Вопросы».

Для тех людей, кому нужна удочка, а не рыба, я расскажу немного про Ajax.


( Читать дальше )

[REVO] AJAX-вывод из SimpleSearch

Как известно, SimpleSearch не умеет выводить результаты поиска через AJAX. Товарищи из himmelbergerdesign.com это поправили.

Делюсь их рецептом.


( Читать дальше )

[EVO] menutitle вместо pagetitle в дереве документов в Админке

Понадобилось отображать в админке menutitle если заполнен он
так как pagetitle очень длинный :)

нашел топик:
forums.modx.com/index.php?topic=34422.0

но там чуть смещенные строки.
в итоге кому нужно вот поправленный nodes.php.zip

UPD
Ага уже задали вопрос зачем это :)
вот картинка так понятней будет

DirectResize 0.8 и php 5.3

Спасибо Temus помог в борьбе с ereg_replace


( Читать дальше )

MODx Evo и wingnix

Дело было вечером, делать было нечего. Настроение было прекрасное и я решил по-экспериментировать.
Дело в том, что практически все пользуемся в свой разработке на локалке той или иной сборкой на основе Apache+PHP+MySQL. Можно поспорить о настройках, скорости и так далее. Но, фактически, скорость под Windows достаточно маленькая и на «боевом» сервере скорость генерации страниц показывается больше.
Бродя по просторам интернета, я наткнулся на сборку Алексея Шабалина winginx. Однако подумал я и попробовал ее потестить.

( Читать дальше )

Обновление MODX на сервере без доступа к FTP

Возникла необходимость обновить Revolution на сервере с медленным FTP. Копирование мне радостно показывало, что 4500 файлов будет заливаться около 7ми часов, и я решил как-то ускорить процесс.

Инструкция для Revo, но, думаю, для Evo не будет особой разницы.

Суть метода сводится к одному предложению: Распаковка zip архива прямо на сервере с помощью php.



( Читать дальше )