Pavel Zarubin
С нами с 07 сентября 2016; Место в рейтинге пользователей: #17elementSync - Еще один способ разработки MODX-приложений в IDE
Привет.
Этот элемент можно считать вторым кусочком компонента который я описал на статью одну пониже, а можно рассчитывать как отдельную тузлу. Предыстория такова: Я не использую файловые сущности pdoTools, идеологически считаю что транспортные пакеты это отличный способ для разработки компонентов, но не сайтов. Так же Gitify меня не вдохновил. Думаю имею на это право :)
Более того — частенько приходится не создавать что-то новое на MODX, а редактировать существующее. И все это нужно а) каким-то образом версионировать б) разрабатывать используя удобные инструменты в IDE. Много времени назад я использовал для этого gitmodx и он меня в целом устраивал. Но есть нюансы, которые мне категорически не нравились.
Этот элемент можно считать вторым кусочком компонента который я описал на статью одну пониже, а можно рассчитывать как отдельную тузлу. Предыстория такова: Я не использую файловые сущности pdoTools, идеологически считаю что транспортные пакеты это отличный способ для разработки компонентов, но не сайтов. Так же Gitify меня не вдохновил. Думаю имею на это право :)
Более того — частенько приходится не создавать что-то новое на MODX, а редактировать существующее. И все это нужно а) каким-то образом версионировать б) разрабатывать используя удобные инструменты в IDE. Много времени назад я использовал для этого gitmodx и он меня в целом устраивал. Но есть нюансы, которые мне категорически не нравились.
Выдаем вместо кэша 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 секунды, так как выдается готовая разметка.Вопрос знатокам, на сколько такой подход вообще жизнеспособный по отношению к системе? Очень бы хотелось услышать комментарии.
Спасибо за донаты:
@Павел Бигель
Оплата заказа miniShop2 без перехода на страницу платёжки
Порой клиенту приходит в голову навязчивая идея ни в коем случае никуда не перенаправлять со своего сайта. И даже чтобы оплатить заказ — ни на какую платёжку не уходить, оставаться на сайте. При этом, денег, чтобы заплатить за разработку интерфейса приёма карт прямо на сайте, у него нет:) Именно по этому поводу и был изобретён этот костыль.
[miniShop2] Кнопка печати заказа из бек-энда
Вывод модификаций msOptionsPrice2 в окне заказа minishop2, при добавлении товара.
Всем привет, столкнулся с задачей сделать выбор модификаций компонента msOptionsPrice2, при добавлении товара в заказ минишопа, в админке.
Пару модификаторов для MODX
Модификатор телефонного номера
К примеру нам нужно вывести телефонный номер в формате: +7 (900) 2000 600 и так чтобы он нажимался как ссылка для запуска на устройствахНо так как плейсхолдер всего один [[++phone]]
Создаем сниппет phone c содержимым
[miniShop2] Как тестировать письма без оформления заказа
YandexMaps2 с напильником
На один сайт нужно яндекс карту совместимую с mFilter2. Приобрели YandexMaps2. Как оказалось, компонент не совсем подходит по наши нужды. Во первых, нужно в поиске чтоб высвечивались не только точки на карте, но и были ниже карты сами результаты поиска. Во вторых, нужно на карте выводить подпись и балун общие для всех точек. Так как это сделано на предыдущей версии сайта.
К счастью, нужный функционал оказалось не сложно допилить напильником. Под катом описание.
К счастью, нужный функционал оказалось не сложно допилить напильником. Под катом описание.
Localizator - поддержка TV параметров
1. Изменены окна редактирования локализаций, добавлена возможность редактирования TV-параметров
Для вывода на редактирование определенных TV-параметров добавлена настройка локализатора localizator_tv_fields
2. Сделан сниппет Localizator
Для этого нужно изменить настройку pdoFetch.class на pdotools.pdofetchlocalizator
Компонент по прежнему бесплатный и доступен на modstore.pro
Исходники на https://github.com/but1head/localizator
Отправить спасибо можете на Яндекс-кошелек 410015133943061
Для вывода на редактирование определенных TV-параметров добавлена настройка локализатора localizator_tv_fields
2. Сделан сниппет Localizator
{'Localizator' | snippet : [
'snippet' => 'pdoMenu',
'includeTVs' => 'img',
'processTVs' => 'img',
'parents' => 0,
'level' => 1,
]}
TV-параметры будут заменяться на параметры из локализации.Для этого нужно изменить настройку pdoFetch.class на pdotools.pdofetchlocalizator
Компонент по прежнему бесплатный и доступен на modstore.pro
Исходники на https://github.com/but1head/localizator
Отправить спасибо можете на Яндекс-кошелек 410015133943061
Установка, настройка и кастомизация редактора TinyMCE Rich Text Editor
Сегодня в телеграм канале MODX написали о том, что редактор TinyMCE Rich Text Editor не умеет то, не умеет этого. Кто-то не сумел его настроить, у кого-то он выдавал ошибки и т.д. Вопрос выбора редактора для меня встал сразу как я перешел на MODX (что напомню случилось не так давно, месяцев 8 назад). Задача стояла одна: сделать простой, удобный и многофункциональный редактор контента. Поигрался с обычным TinyMCE, поигрался с ckeditor, поигрался с TinyMCE Rich Text Editor и решил ковырять последний.
Я не хочу устраивать холивар, какой мол, редактор лучше. Я делюсь готовым решением рабочего и многофункционального редактора. А какой выбирать — решать конечно вам.
Я не хочу устраивать холивар, какой мол, редактор лучше. Я делюсь готовым решением рабочего и многофункционального редактора. А какой выбирать — решать конечно вам.