Павел Романов
С нами с 03 марта 2014; Место в рейтинге пользователей: #70mmxFenom - нативная интеграция шаблонизатора
Продолжаю разработку новой вселенной дополнений для MODX и сегодня у нас на очереди шаблонизатор Fenom.
Свою известность в мире MODX этот шаблонизатор получил благодаря интеграции в pdoTools, после чего многие сниппеты стали поддерживать более удобный синтаксис и возможности расширения.
Однако, с течением времени компонент оброс огромным количеством функций и сейчас его разрабатывать очень трудно. Где-то поменяешь одно — сломаешь другое.
Да и с появлением mmxDatabase, как мне кажется, какие-то упрощённые выборки из БД просто теряют актуальность. Ведь сегодня можно в любом сниппете делать вот так:
Свою известность в мире MODX этот шаблонизатор получил благодаря интеграции в pdoTools, после чего многие сниппеты стали поддерживать более удобный синтаксис и возможности расширения.
Однако, с течением времени компонент оброс огромным количеством функций и сейчас его разрабатывать очень трудно. Где-то поменяешь одно — сломаешь другое.
Да и с появлением mmxDatabase, как мне кажется, какие-то упрощённые выборки из БД просто теряют актуальность. Ведь сегодня можно в любом сниппете делать вот так:
$resources = MMX\Database\Models\Resource::query()
->where('published', true)
->select('id', 'pagetitle')
->get()
->toArray();
return print_r($resources, true);
Не хватало только шаблонизатора для подобных выборок — и теперь он тоже есть. ecommerce.js - Электронная коммерция (Яндекс.Метрика и Google Analytics) для сайтов на базе MODX + miniShop2
Привет!
Хочу поделиться js скриптом, который позволяет передавать данные электронной коммерции в системы аналитики Яндекс.Метрика и Google Analytics.
Из особенностей отмечу то, что мое решение выполнено не в виде дополнения для MODX, а в виде одного js файла и не имеет в своем составе php кода (сниппетов и т.п.). Также я применил, пожалуй, не самый стандартный подход в том, как будут получаться данные о товарах на страницах сайта.
Хочу поделиться js скриптом, который позволяет передавать данные электронной коммерции в системы аналитики Яндекс.Метрика и Google Analytics.
Из особенностей отмечу то, что мое решение выполнено не в виде дополнения для MODX, а в виде одного js файла и не имеет в своем составе php кода (сниппетов и т.п.). Также я применил, пожалуй, не самый стандартный подход в том, как будут получаться данные о товарах на страницах сайта.
[easyRedirects] Еще один компонент для управления редиректами
Привет!
easyRedirects — дополнение для управления редиректами (с возможностью выбора кода ответа из 301, 302, 307, 308) в панели управления сайтами.
Для MODX есть несколько компонентов, которые позволяют из админки управлять редиректами со старых url на новые. Из тех, что знаю я — это Redirector (наверное самый первый компонент, ему 10+ лет точно, но надо сказать, его периодически обновляют), и autoRedirector. Кстати, они поддерживают только 301 редирект, а вот 302 или более свежие 307 и 308 — нет.
При попытке применить их на моем сайте выплыли проблемы:
1. Redirector не позволял создать редирект на произвольный url, он обязательно хотел видеть в качестве цели существующий ресурс. А мне так не нужно было, у меня страницы генерируются своим плагином, обрабатывающим событие OnPageNotFound, т.е. целевого ресурса как такового на сайте нет.
2. autoRedirector больше заточен на отслеживание измененных url, ну и у него та же особенность — конечный url редиректа должен принадлежать существующему ресурсу.
В общем в итоге пара вечеров и готова первая версия easyRedirects. По сути это сильно модифицированный и дополненный Redirector.
easyRedirects — дополнение для управления редиректами (с возможностью выбора кода ответа из 301, 302, 307, 308) в панели управления сайтами.
Для MODX есть несколько компонентов, которые позволяют из админки управлять редиректами со старых url на новые. Из тех, что знаю я — это Redirector (наверное самый первый компонент, ему 10+ лет точно, но надо сказать, его периодически обновляют), и autoRedirector. Кстати, они поддерживают только 301 редирект, а вот 302 или более свежие 307 и 308 — нет.
При попытке применить их на моем сайте выплыли проблемы:
1. Redirector не позволял создать редирект на произвольный url, он обязательно хотел видеть в качестве цели существующий ресурс. А мне так не нужно было, у меня страницы генерируются своим плагином, обрабатывающим событие OnPageNotFound, т.е. целевого ресурса как такового на сайте нет.
2. autoRedirector больше заточен на отслеживание измененных url, ну и у него та же особенность — конечный url редиректа должен принадлежать существующему ресурсу.
В общем в итоге пара вечеров и готова первая версия easyRedirects. По сути это сильно модифицированный и дополненный Redirector.
phpThumbOf modx 3
Если кому-то требуется, что бы был ресайз фотографий на modx 3 по средствам phpThumbOf, то необходимо внести правки.
В сниппете удалить
И заменить строчку через сервер в файле root>/core/components/phpthumbof/model/phpthumbof/phpthumbof.class.php. #193
Я для себя искал решение, может кому пригодится.
В сниппете удалить
if (!$modx->loadClass('modPhpThumb',$modx->getOption('core_path').'model/phpthumb/',true,true)) {
$modx->log(modX::LOG_LEVEL_ERROR,'[phpThumbOf] Could not load modPhpThumb class.');
return '';
}
И заменить строчку через сервер в файле root>/core/components/phpthumbof/model/phpthumbof/phpthumbof.class.php. #193
$this->phpThumb = new MODX\Revolution\modPhpThumb($this->modx);
ИсточникЯ для себя искал решение, может кому пригодится.
[mFilter2] сдвиг слайдера пальцем на мобилках
заранее предупреждаю решение «в лоб» и может кто подскажет более красивое решение
для того чтобы slider слушался движения пальцем по экрану мобилки оказувается нужно что-то придумать и для этого еще 10 лет назад выпустили некий хак для jquery UI
github.com/furf/jquery-ui-touch-punch
тут почитаете кому интересно
итого чтобы заработал наш сладер нам нужно подключить на страницу еще 2 файла
собственно jqueryUI и jquery-ui-touch-punch
кастомный jqueryUI с модулями mouse и Draggable
можно скачать по ссылке
теперь все это дело подключаем
JS
для того чтобы slider слушался движения пальцем по экрану мобилки оказувается нужно что-то придумать и для этого еще 10 лет назад выпустили некий хак для jquery UI
github.com/furf/jquery-ui-touch-punch
тут почитаете кому интересно
итого чтобы заработал наш сладер нам нужно подключить на страницу еще 2 файла
собственно jqueryUI и jquery-ui-touch-punch
кастомный jqueryUI с модулями mouse и Draggable
можно скачать по ссылке
теперь все это дело подключаем
JS
<!-- это мои пути у вас все будет так как вы захотите -->
<script src="/tpl/lib/jquery-ui-1.13.2.custom/jquery-ui.min.js"></script>
<script src="/tpl/lib/jquery-ui-1.13.2.custom/jquery.ui.touch-punch.js"></script>
в CSS нужно добавить.fl_price .mse2_number_slider .ui-slider-range.ui-widget-header{
position: absolute;
}
.fl_price .mse2_number_slider .ui-slider-handle.ui-corner-all.ui-state-default{
position: absolute;
}
.fl_price .mse2_number_slider {
position: relative;
}
У меня работает))) Добавляем функцию HTML Beautify/Prettify в Ace!
Всем привет, работая через админку с кодом, часто возмущало, что не могу выровнять код, поэтому постоянно пользовался сторонними сайтами для этого… Но вот моему терпению, настал конец) Решил покопаться в компоненте, поискать, где же там эта функция зарыта?) Скажу так, она там есть, но почему то не работает, в связи с чем, я «прикрутил» стороннюю библиотеку для этого!
Кешируем mFilter2
Как кол-во товаров на сайте переваливает какую-то границу, то mFilter2 начинает жестко тупить. Переодически мне приходиться бороться с этой проблемой. В итоге изучения mFilter2 выработал пару решений.
[ModExtra3] Заготовка для создания компонентов для MODX3
Одна из проблем развития экосистемы MODX3 на текущий день — не очень большой объем доступной информации, инструкций. Официальный сайт только недавно начал выпускать справочные пособия на тему разработки MODX3.
Мне в свое время очень помогла в понимании работы компонентов, подготовленная @Василий Наумкин заготовка для создания компонентов modExtra. Я решил поднять это знамя и донести его до MODX3
Представляю вашему вниманию ModExtra3. Заготовка для создания компонентов и справочное пособие по MODX3.
Мне в свое время очень помогла в понимании работы компонентов, подготовленная @Василий Наумкин заготовка для создания компонентов modExtra. Я решил поднять это знамя и донести его до MODX3
Представляю вашему вниманию ModExtra3. Заготовка для создания компонентов и справочное пособие по MODX3.
Билдер SQL запросов для modx, minishop2 и TV
Всем привет, просили меня недавно сделать выгрузку со старого сайта на modx с более чем 200к товаров, т.к. я уже давно не работал с modx, абсолютно забыв методы API, а также помня, насколько медленно и ресурсозатратно оно работает было решено писать SQL напрямую и все бы ничего, пока я не увидел структуру tv полей. Руками писать SQL с выборкой необходимых TV было адским адом, и было решено за часик накидать мини билдер SQL запросов
Получился примерно такой в использовании билдер, по мне покрывает 100% моих задач в формировании SQL для выгрузок из modx & ms2:
Если хочется сразу к коду
Получился примерно такой в использовании билдер, по мне покрывает 100% моих задач в формировании SQL для выгрузок из modx & ms2:
$builder = new SimpleBuilder();
$builder->addResourceFields('id', 'pagetitle', 'longtitle')
->addMs2Fields('article', 'price')
->addTvFields('price_opt', 'product_time', 'valute', 'remains', 'product_tax')
->where('deleted', '=', false)
->where('published', '=', true)
->where('class_key', '=', 'msProduct')
->where('remains', '!=', 0)
->whereNotNull('remains')
->whereIn('id', [18559, 18560])
->limit(1)
->offset(1)
;
$sql = $builder->sql();
$products = $modx->query($sql)->fetchAll(PDO::FETCH_ASSOC);
Под катом код и результат SQL который формирует билдерЕсли хочется сразу к коду
Понимание addPackage, loadClass и getService
Перевод заметки Understanding addPackage, loadClass and getService
ВНИМАНИЕ! Актуально для MODx 2.*
Там на самом донышке пару строк про MODx 3 из официальной документации касательно данной темы
Повышайте свой уровень разработки на MODx. Присоединяйтесь к исследованию Боба (Bob Ray) о том, когда и зачем использовать каждый из трех методов загрузки классов MODX.
ВНИМАНИЕ! Актуально для MODx 2.*
Там на самом донышке пару строк про MODx 3 из официальной документации касательно данной темы
Повышайте свой уровень разработки на MODx. Присоединяйтесь к исследованию Боба (Bob Ray) о том, когда и зачем использовать каждый из трех методов загрузки классов MODX.