Павел Романов

Павел Романов

С нами с 03 марта 2014; Место в рейтинге пользователей: #70

mmxFenom - нативная интеграция шаблонизатора

Продолжаю разработку новой вселенной дополнений для MODX и сегодня у нас на очереди шаблонизатор Fenom.

Свою известность в мире MODX этот шаблонизатор получил благодаря интеграции в pdoTools, после чего многие сниппеты стали поддерживать более удобный синтаксис и возможности расширения.

Однако, с течением времени компонент оброс огромным количеством функций и сейчас его разрабатывать очень трудно. Где-то поменяешь одно — сломаешь другое.

Да и с появлением mmxDatabase, как мне кажется, какие-то упрощённые выборки из БД просто теряют актуальность. Ведь сегодня можно в любом сниппете делать вот так:
$resources = MMX\Database\Models\Resource::query()
  ->where('published', true)
  ->select('id', 'pagetitle')
  ->get()
  ->toArray();

return print_r($resources, true);
Не хватало только шаблонизатора для подобных выборок — и теперь он тоже есть.
Василий Наумкин
02 мая 2024, 11:51
modx.pro
1
783
+20

ecommerce.js - Электронная коммерция (Яндекс.Метрика и Google Analytics) для сайтов на базе MODX + miniShop2

Привет!

Хочу поделиться js скриптом, который позволяет передавать данные электронной коммерции в системы аналитики Яндекс.Метрика и Google Analytics.

Из особенностей отмечу то, что мое решение выполнено не в виде дополнения для MODX, а в виде одного js файла и не имеет в своем составе php кода (сниппетов и т.п.). Также я применил, пожалуй, не самый стандартный подход в том, как будут получаться данные о товарах на страницах сайта.
Наумов Алексей
20 декабря 2023, 12:03
modx.pro
7
1 267
+12

[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.
Наумов Алексей
27 ноября 2023, 16:29
modx.pro
9
2 578
+13

phpThumbOf modx 3

Если кому-то требуется, что бы был ресайз фотографий на modx 3 по средствам phpThumbOf, то необходимо внести правки.

В сниппете удалить
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);
Источник

Я для себя искал решение, может кому пригодится.
Сергей
07 ноября 2023, 13:54
modx.pro
2
1 179
+2

[mFilter2] сдвиг слайдера пальцем на мобилках

заранее предупреждаю решение «в лоб» и может кто подскажет более красивое решение

для того чтобы 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;
}
У меня работает)))
Stepan
04 октября 2023, 19:23
modx.pro
4
874
+4

Добавляем функцию HTML Beautify/Prettify в Ace!

Всем привет, работая через админку с кодом, часто возмущало, что не могу выровнять код, поэтому постоянно пользовался сторонними сайтами для этого… Но вот моему терпению, настал конец) Решил покопаться в компоненте, поискать, где же там эта функция зарыта?) Скажу так, она там есть, но почему то не работает, в связи с чем, я «прикрутил» стороннюю библиотеку для этого!



Денис Усманов
03 октября 2023, 12:12
modx.pro
7
2 181
+10

Кешируем mFilter2

Как кол-во товаров на сайте переваливает какую-то границу, то mFilter2 начинает жестко тупить. Переодически мне приходиться бороться с этой проблемой. В итоге изучения mFilter2 выработал пару решений.
Александр Туниеков
22 сентября 2022, 08:35
modx.pro
7
1 566
+8

[ModExtra3] Заготовка для создания компонентов для MODX3

Одна из проблем развития экосистемы MODX3 на текущий день — не очень большой объем доступной информации, инструкций. Официальный сайт только недавно начал выпускать справочные пособия на тему разработки MODX3.

Мне в свое время очень помогла в понимании работы компонентов, подготовленная @Василий Наумкин заготовка для создания компонентов modExtra. Я решил поднять это знамя и донести его до MODX3

Представляю вашему вниманию ModExtra3. Заготовка для создания компонентов и справочное пособие по MODX3.
Николай Савин
06 июля 2022, 16:56
modx.pro
8
2 114
+20

Билдер SQL запросов для modx, minishop2 и TV

Всем привет, просили меня недавно сделать выгрузку со старого сайта на modx с более чем 200к товаров, т.к. я уже давно не работал с modx, абсолютно забыв методы API, а также помня, насколько медленно и ресурсозатратно оно работает было решено писать SQL напрямую и все бы ничего, пока я не увидел структуру tv полей. Руками писать SQL с выборкой необходимых TV было адским адом, и было решено за часик накидать мини билдер SQL запросов

Получился примерно такой в использовании билдер, по мне покрывает 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 который формирует билдер
Если хочется сразу к коду
Pavel Zarubin
24 февраля 2022, 02:10
modx.pro
5
1 654
+10

Понимание addPackage, loadClass и getService

Перевод заметки Understanding addPackage, loadClass and getService
ВНИМАНИЕ! Актуально для MODx 2.*
Там на самом донышке пару строк про MODx 3 из официальной документации касательно данной темы

Повышайте свой уровень разработки на MODx. Присоединяйтесь к исследованию Боба (Bob Ray) о том, когда и зачем использовать каждый из трех методов загрузки классов MODX.
Евгений Webinmd
22 января 2022, 01:06
modx.pro
6
2 097
+14