Готовые решения
Вывод заказов пользователя и товаров заказа
Нужна была возможность вывода заказов клиента и товаров в этих заказах. Велосипедов много, мой один из них.
1) Снипет для вывода заказов:
2) Снипет вывода товаров заказа:
Писал потому как, во первых учусь писать, во вторых быстрее написать чем искать подходящее решение и допиливать его. Буду рад советам и исправлениям. Пригодились бы советы по поводу:
1) сырого SQL:
1) Снипет для вывода заказов:
<?php
// снипет выводит заказы текущего пользователя
$user_id = $modx->user->get('id');
$tpl = $modx->getOption('tpl',$scriptProperties,'tpl.order');
// подхватываем заказы текущего пользователя
$q = $modx->newQuery('msOrder', array('user_id' => $user_id));
$results = $modx->getCollection('msOrder', $q);
// выводим или чанками или предупреждением что заказов пока нет
foreach ($results as $result) {
if ( $result ) {
$resultArray = $result->toArray();
$output .= $modx->getChunk($tpl,$resultArray);
} else {
$output = 'У вас пока еще нет заказов.';
}
}
return $output;и соответственно чанк tpl.order (на феноме):<div>
<div> Заказ <span>{$_pls['num']}</span> от <span>{$_pls['createdon']}</span> года</div>
<div>
{$_modx->runSnippet('!msOrdersProducts', ['order'=>$_pls['id']])}
</div>
</div>2) Снипет вывода товаров заказа:
<?php
// выводит товары заказа.
$tpl = $modx->getOption('tpl',$scriptProperties,'tpl.order_cell'); // если товар найден
$tpl_empty = $modx->getOption('tpl',$scriptProperties,'tpl.order_cell_empty'); // если товар не найден
// ищем товар по id заказа
$q = $modx->prepare("SELECT * FROM ".$modx->getOption('table_prefix')."ms2_order_products WHERE order_id=".$order);
$q->execute();
$results = $q->fetchAll(PDO::FETCH_ASSOC);
$output;
// перебором либо выводим нужный заказ, либо оповещаем что его уже нет
foreach ($results as $result) {
$res = $modx->getObject('modResource', array('pagetitle'=>$result[name]));
if ($res) {
$resArray = $res->toArray();
$output .= $modx->getChunk($tpl,$resArray);
} else {
$prodName = $modx->setPlaceholder('name', $result[name]);
$output .= $modx->getChunk($tpl_empty);
}
}
return $output;и соответственно чанк tpl.order_cell (на феноме):<div>
<span><a href="{$id | url}">{$pagetitle}</a></span>
<span>{$price} Р</span>
</div>и чанк в том случае если товара уже нет tpl.order_cell_empty:<div>
<span>{$_pls['name']}</span>
<span>не найден</span>
</div>Писал потому как, во первых учусь писать, во вторых быстрее написать чем искать подходящее решение и допиливать его. Буду рад советам и исправлениям. Пригодились бы советы по поводу:
1) сырого SQL:
$q = $modx->prepare("SELECT * FROM ".$modx->getOption('table_prefix')."ms2_order_products WHERE order_id=".$order);
$q->execute();
$results = $q->fetchAll(PDO::FETCH_ASSOC);2) Первоначально хотел все в первом снипете вывести вот тут (далее в коде), но не получилось. Если кто подскажет буду рад.// выводим или чанками или предупреждением что заказов пока нет
foreach ($results as $result) {
// думал тут подхватить товары, но что с ними дальше так и не придумал...
if ( $result ) {
$resultArray = $result->toArray();
$output .= $modx->getChunk($tpl,$resultArray);
} else {
$output = 'У вас пока еще нет заказов.';
}
}Всем успехов. Мониторим свои сайты via modMonitor на node.js
Всем привет!
Для начала предлагаю зайти вот сюда: modmonitor.ru/
Если это не интересно, то можно дальше и не читать. А если интересно и хотите себе такое же, прошу под кат.
Для начала предлагаю зайти вот сюда: modmonitor.ru/
Если это не интересно, то можно дальше и не читать. А если интересно и хотите себе такое же, прошу под кат.
Копия ресурса - небольшой плагин.
Иногда возникает необходимость при копировании ресурса, присвоить дублю какие то свойства оригинала
из таблиц сторонних компонентов. Это достаточно просто сделать плагином на событие OnResourceDuplicate.
Под катом пример плагина для импорта опций пакета msOptionsColor
из таблиц сторонних компонентов. Это достаточно просто сделать плагином на событие OnResourceDuplicate.
Под катом пример плагина для импорта опций пакета msOptionsColor
cacheRegenerator. Авторегенерация кеша страниц
Сегодня публикую маленький, но очень полезный компонент (надеюсь в течение дня будет одобрен в modstore.pro). Сейчас это всего один плагин. Задача его состоит в том, чтобы сразу после сохранения документа выполнять регенерацию этой страницы, чтобы даже при первом заходе посетителя, документ уже был в кеше и отдавался быстрее.
Создаём ZIP архив средствами MODX
Случается так, что на сайте надо запаковать какую-то папку, а по некоторым причинам сделать это невозможно затруднительно. Предлагаю вариант, который практически не требует ничего, кроме MODX и доступа в бек-энд.

В xPDO есть класс xPDOZip, который умеет запаковывать/распаковывать архивы. К сожалению, в самом MODX его функциональность задействована ровно наполовину — распаковать ZIP архив мы можем, а вот запаковать папку в архив не имеем возможности. Предлагаю решение!

В xPDO есть класс xPDOZip, который умеет запаковывать/распаковывать архивы. К сожалению, в самом MODX его функциональность задействована ровно наполовину — распаковать ZIP архив мы можем, а вот запаковать папку в архив не имеем возможности. Предлагаю решение!
Как починить MarkerGoogleMaps.
Ставил сейчас компонент MarkerGoogleMaps. Недавно у GoogleMaps изменились требования и теперь для работы нужен ключ API. Компонент MarkerGoogleMaps старенький и давно не обновляется и сейчас в нем не работает поиск по адресу в админке и не грузиться сама карта на фронте.
После некоторых танцев с бубном компонент удалось починить и здесь решил поделиться решением. Вдруг кому-то надо :).
После некоторых танцев с бубном компонент удалось починить и здесь решил поделиться решением. Вдруг кому-то надо :).
Для установки страниц, настроек и приложений
Простое приложение для первоначальной установки и настройки сайта.
Внимание!!! Устанавливать только на чистый MODX REVO.
Приложение может:
— создать страницы;
— установить отмеченные приложения;
— задать настройки по умолчанию (такие как емаил по умолчанию, включение ЧПУ и тд.);




Приложение бесплатное.
Приложение в магазине
Внимание!!! Устанавливать только на чистый MODX REVO.
Приложение может:
— создать страницы;
— установить отмеченные приложения;
— задать настройки по умолчанию (такие как емаил по умолчанию, включение ЧПУ и тд.);




Приложение бесплатное.
Приложение в магазине
smsGate-1.0.0. Авторизация через sms

На самом деле компонент предназначен не только для авторизации через sms, а в принципе для отправки sms. Но в первую очередь он нужен был именно для настройки двухфакторной авторизации. И вот как раз в плане вклинивания в процесс авторизации я узнал много нового (хотя и так знал не мало). Был немного расстроен…
Новая версия готового интернет-магазина ms2Store

Приветствую!
С 23 ноября доступна новая версия сборки на MODX Revo и miniShop2. Кому интересно изучать электронную коммерцию с MODX Revo на готовом решение, прошу ознакомиться к функционалом.
modMonitor 2+
Несмотря на то, что в MODX нашлись критические уязвимости, я продолжаю дальше разработку на своей любимой платформе, и надеюсь другие так же будут делать. Лично я ни на минуту не задумался на счет смены движка. Уверен, эти дыры залатаются, и все будут спать спокойно.
Сегодня я выкатил обновленную версию компонента modMonitor, который так же, возможно, кому-нибудь немного расстроил сон. Во всяком случае обсуждений было много.
Сегодня я выкатил обновленную версию компонента modMonitor, который так же, возможно, кому-нибудь немного расстроил сон. Во всяком случае обсуждений было много.