contentSync - синхронизация контента прода и дева для MODX Revolution

Привет, я снова тут!

Одна из дегенеративных особенностей MODX — хранить все в базе. Кони, люди, контент — все хранится в базе.
Еще более дегенеративная особенность — MODX учит вас хранить все в ресурсах и это не сказать что правильная логика.

Часто возникает ситуация, что тестовая версия сайта начинает плотно отставать по контенту от продакшена и необходимо как-то синхронизировать изменения.

Я придумал решение, которое отчасти решает мою задачу и потребность. Если решение вам понравится — я упакую все в пакет и выложу в бесплатный доступ.
Павел Бигель
20 февраля 2020, 13:55
modx.pro
2
335
+16

Выдаем вместо кэша html файлик

Предыстория. Возник такой вопрос. Есть какой то сайт, и в нем получается в каталоге было так. В вызов mFilter2 вложено в чанк еще парочка вызовов msProducts ну и так далее. В итоге, раздел грузился за овер 10 секунд. Да, сейчас напишите, что вот надо оптимизировать. Это понятно, но я решил подойти с другой стороны.
Итак, идея была такая, что бы вместо кэша выдавать уже готовую разметку целой страницы.
В итоге, у нас есть плагин:
<?php
switch($modx->event->name){
    case 'OnWebPagePrerender':
        // Тут просто условие, чтобы срабатывал только на категории (можно по сути задавать разные условия)
        if($modx->resource->class_key != 'msCategory'){
            return;
        }
        //Забираю отрендеренный ресурс
        $_output = &$modx->resource->_output; //Забираю отрендеренный ресурс
        // Создаю файлик разметки этого ресурса (можно по сути указать любой путь и так далее, сейчас и так сойдет)
        $file = MODX_BASE_PATH . 'resourcecache/' . $modx->resource->uri . '/' . $modx->resource->id . '.txt';
        if(is_file($file)){
            // Если такой файлик уже существует, то просто отдаю его содержимое
            $output = file_get_contents($file);
        }else{
            // Если файлика нету, то записываю туда отрендеренную страницу
            $cache = $modx->getCacheManager();
            $cache->writeFile($file, $_output);
            $output = $_output;
        }
        
        // Подменяю вывод на готовый
        $modx->resource->_output = $output;
        
        break;
        
    case 'OnLoadWebPageCache':
        // Это событие срабатывает до рендера страницы, оно проверяет, есть ли кэш страницы, и если он есть...
        $file = MODX_BASE_PATH . 'resourcecache/' . $modx->event->params['resource']->uri . '/' . $modx->event->params['resource']->id . '.txt';
        
        //...мы проверяем файлик, так как страница уже грузилась и файлик есть и подменяем кэш на содержимое неашего файлика.
        if(is_file){
            $modx->event->params['resource']->_content = file_get_contents($file);
        }
        
        break;
}
Итог, раздел грузился за 10 секунд (ну да, такой раздел, идея в другом), после плагина уже за 0.006 секунды, так как выдается готовая разметка.
Вопрос знатокам, на сколько такой подход вообще жизнеспособный по отношению к системе? Очень бы хотелось услышать комментарии.

Спасибо за донаты:
@Павел Бигель
Михаил
20 февраля 2020, 10:55
modx.pro
6
245
+16

siteDev - установка компонента

Обновил компонент для разработки сайтов/компонентов. Добавил немного полезных плюше.
Так как разработку своих компонентов я всегда начинаю именно с siteDev

modExtra


Например, во время установки можно переименовать modExtra, который перед переименованием копируется в папку:

Андрей Степаненко
18 февраля 2020, 18:11
modx.pro
1
261
+12

SEOtabs — работаем со вкладками

Мы — DSMC Agency. Занимаемся поисковой оптимизацией, разработкой сайтов, а теперь и разработкой приложений для сайтов на CMS MODX. Представляем наш первый самостоятельный компонент SEOtabs для работы со вкладками товара.

Официальный сайт пакета. Есть демо — можно URL посмотреть и пощелкать seotabs.ru

Что делает компонент?

Компонент позволяет создавать, редактировать, удалять табы товаров, а также формировать из них виртуальные страницы с уникальными переменными URL, Title, Description. Пакет призван упростить администрирование этого блока, помочь в продвижении интернет-магазинов и каталогов.

Если смотреть на компонент глобально, то он в несколько раз ускоряет процессы поискового маркетинга. От кластеризации семантики до внедрения решений по ее обработке всего один шаг. И этот шаг — SEOtabs.

Олег Щавелев
17 февраля 2020, 11:17
modx.pro
2
329
+15

500 ошибка как поступить дальше?

Знаю многие встречали (так как было много вопросов ко мне) такое что когда ставишь компонент например в зависимостях есть pdoTools, но нет правильной проверки получают 500 ошибку. Или взять второй вариант разрабатываешь свой плагин допустил ошибку или случайно удалил файл в IDE c какого-то компонента и здесь перестала работать админка, так как плагин имел например событие "OnHandleRequest".

Что делать дальше?
Да всё намного проще нежели думают другие
Yuriy Finiv
16 февраля 2020, 14:23
modx.pro
2
254
+11

[modInstagram] 1.2.0 - Instagram PHP Scraper и прокси



Всем привет!

Долгожданное обновление компонента. Что нового:

  • теперь используется библиотека Instagram PHP Scraper
  • два способа получения данных: парсинг страницы и JSON www.instagram.com/USER_NAME/?__a=1
  • авторизация по логину/паролю для закрытых аккаунтов (также может помочь, если заблокирован IP)
  • возможность использования прокси для обхода блокировки IP
  • вывод более 20 постов
Актуальная документация в modstore.

Новая версия уже в modstore: https://modstore.pro/packages/photos-and-files/modinstagram
Демо: https://demo.webone.pw/modinstagram/scraper/
Github: https://github.com/ig0r74/modInstagram/
Игорь Терентьев
16 февраля 2020, 12:15
modx.pro
140
+10

[msBonus2] Миграция с msBonus на msBonus2


Ситуация с миграцией на вторую версию несколько сложнее, чем может показаться обывателю. Вместе с цифрами в аккаунте переносить нужно ещё и логи начислений. К тому же, на сайте может быть не сотня юзеров, а несколько десятков тысяч — тут уже проблема возникает с max_execution_time.

Предлагаю скрипт, который вместе с цифрами бонусов переносит ещё и логи, а также может работать из Console с десятками тысяч юзеров, не боясь max_execution_time.
Павел Гвоздь
15 февраля 2020, 10:03
modx.pro
118
+9

Отображение превьюшек для svg-картинок в ТВ типа "Изображение"

Сегодня обнаружил, что из коробки тв-шки с картинками не умеют показывать превью после выбора картинки. Всё дело в том, что по-умолчанию все картинки скармливаются phpThumb чтоб сгенерить превью нужного размера. Это логично, но не учитывается вариант с svg — картинка векторная, и пхпТумб не может сгенерить превью.
То, что я сделал — не панацея, и я отдаю себе отчёт почему я это сделал и что это не универсальное решение, но, тем не менее, вероятно кому-то в его ситуации это тоже подойдёт.
Антон
14 февраля 2020, 20:47
modx.pro
2
212
+6

Топ персональных минусов UI/UX в MODX

Всем привет!
Начиная знакомство с MODX, я частенько удивлялся логичности и простоте CMS, и не мог нарадоваться :) Однако были и моменты непонимания.
В этой заметке я хочу обозначить топ минусов в UI/UX, исправив которые, MODX станет заметно удобнее.

Руслан Алеев
14 февраля 2020, 18:31
modx.pro
1
312
+11

Замена дополнения mvtForms — mvtForms2

Давно пришло время обновить компонент mvtForms.
Т.к. изменений много, выпущено новое дополнение: mvtForms2, mvtForms поддерживается, но более не доступен в modStore.
Подробно об изменения — под катом.
Полная документация здесь.
Алексей Шумаев
12 февраля 2020, 23:26
modx.pro
335
+7