Ганин Роман

Ганин Роман

С нами с 29 апреля 2013; Место в рейтинге пользователей: #36

Добавление своих полей в форму заказа [обновлено]

При разработке нескольких проектов, возникала необходимость в получении дополнительных данных от покупателей, а полей в miniShop2 ограниченное количество. Поиск готового решения результата не дал, поэтому предлагаю свой вариант.

Решение обновлено, убраны правки исходного кода минишопа, теперь при обновлении ничего не затрется, изменены ключи у полей

Решалось это следующим образом:
1. Добавлялись необходимые поля, для примера взяты тип плательщика, название организации и инн.
2. Добавлялся плагин срабатывающий при сохранении заказа и при подключении js минишопа в админке.
3. Редактировались настройки и записи словарей.

Более подробно далее
Дмитрий Меркурьев
11 октября 2016, 16:38
modx.pro
97
19 961
+11

Уведомления с MODx в Telegram

Всем привет. Это не совсем готовое дополнение, скорее инструкция. Может быть кто нибудь разовьёт и соберёт пакет.
У меня небольшой контентный проект и надо было быть оперативно в курсе, что там журналисты публикуют.
Такое извещение можно повесить на заказ обратного звонка, заказ товара или какие нибудь другие события о которых я не подумал :)
Михаил
12 апреля 2016, 09:59
modx.pro
32
9 789
+13

Дублирование результатов запроса после leftJoin

Уважаемое сообщество, здравствуйте!
В ходе работы над сниппетом, возвращающим список всех заказов пользователя, возникла проблема:
в результирующем массиве информация о заказе продублирована столько раз, сколько товаров включено в заказ.
Пожалуйста, подскажите, каким образом можно вернуть результат присоединения таблицы товаров к заказу в рамках одного элемента массива?
Ниже код моего костыля сниппета (код, относящийся к оформлению результатов выборки вырезан, т.к. к вопросу не относится):
<?php
//
if(!isset($user) || ($user === 0)){
    return '<p>Ошибка! Идентификатор пользователя не определён.</p>';
}

//Задаём значения чанков оформления по-умолчанию
if(!isset($tpl)){ $tpl = 'tpl.profile.orders_list.row'; }
if(!isset($tplWrapper) || ($tplWrapper === '')){ $tplWrapper = 'tpl.profile.orders_list.wrapper'; }
if(!isset($idx)){ $idx = 1; }

$q = $modx->newQuery('msOrder');
$q->select(
    array
    (
        'msOrder.id',
        'msOrder.num',
        'msOrder.createdon',
        'msOrder.cost',
        'msOrder.status',
        'op.product_id',
        'op.name'
    )
);
$q->where(array('msOrder.user_id' => $user));
$q->sortby('msOrder.id','DESC');
$q->leftJoin('msOrderProduct','op', 'msOrder.id = op.order_id');
$query = $q->prepare();
$query->execute();
$orders = $query->fetchAll(PDO::FETCH_ASSOC);

$res = print_r($orders,1);
echo '<div class="ord-lst-wrap"><pre>';
echo $res;
echo '</pre></div>';
Ниже приведен результат работы сниппета, первые два пункта демонстрируют проблему (в заказе два товара):
Array
(
    [0] => Array
        (
            [id] => 9
            [num] => 1511/6
            [createdon] => 2015-11-17 09:43:21
            [cost] => 17849.00
            [status] => 1
            [product_id] => 5553
            [name] => Primavera (гостиная) Комод 1 /Глазово
        )

    [1] => Array
        (
            [id] => 9
            [num] => 1511/6
            [createdon] => 2015-11-17 09:43:21
            [cost] => 17849.00
            [status] => 1
            [product_id] => 5205
            [name] => Berlin 1 (гостиная) Шкаф МНЦ КОРПУС (01, Ясень шимо свентлый) /Глазово
        )

    [2] => Array
        (
            [id] => 8
            [num] => 1511/5
            [createdon] => 2015-11-15 09:00:35
            [cost] => 7599.00
            [status] => 1
            [product_id] => 2034
            [name] => (закрыт) Стенка Франк МА-190 Дуб кремона/Дуб феррара /Столлайн
        )

    [3] => Array
        (
            [id] => 7
            [num] => 1511/4
            [createdon] => 2015-11-10 03:09:59
            [cost] => 26323.00
            [status] => 1
            [product_id] => 5788
            [name] => Акцент орхидея Шкаф-купе 2300х1800х600/ясень шимо темный/шампань/Бумеранг
        )
P.S.: самое простое решение — вовсе избежать leftJoin'а таблицы товаров заказа к запросу, а в оформленном выводе возвращать ссылку с id-заказа, которая вела бы на страничку со сниппетом, принимающим на вход id заказа и возвращающего оформленный список товаров этого заказа. Но, может быть, это возможно сделать в одном сниппете (без обработки результирующего массива на php — объединения элементов с одинаковым id и формированием массива товаров)? Куда копать?
Спасибо!
Денис Райх
18 ноября 2015, 01:15
modx.pro
2
1 957
0

Добавление модификаторов Fenom

Задался вопросом добавления своих модификатором в парсер Fenom для modx.
Из этого вышел простой модификатор |days, который правильно склоняет «дней», «дня», «день».
вызывать так:
{$dayscount|days}
Алексей
16 ноября 2015, 12:55
modx.pro
13
4 667
+6

[CurrencyRate] - обновление стоимости по курсу

Пакет [CurrencyRate] получает информацию о курсах иностранных валют по отношению к рублю, опубликованная на официальном сайте Банка России в сети Интернет.
Публикую небольшое решение для обновления стоимости продуктов по курсу.


Володя
21 октября 2015, 10:31
modx.pro
10
4 598
+9

Вывести все поисковые запросы на сайте

Доброго времени суток. Возник вопрос, каким образом можно вывести популярные поисковые запросы на сайте, что-то вроде облака тегов, но из запросов.

[[!pdoPage?
	&class=`mseQuery`
        &tpl=``
        &showLog=`1`
]]
[[!+page.nav]]
Klike
20 октября 2015, 13:36
modx.pro
3
1 452
0

Сборка transport-пакета без установки MODX



Писать свои пакеты для MODX не просто для новичка, да и опытному разработчику иногда не сладко приходится. Но новичок пугается, а опытный разбирается :).

Эта заметка рассказывает о том, как можно написать и собрать пакет компонента для MODX без установки и настройки самого MODX. Уровень выше среднего, так что возможно придется поломать голову в отдельных случаях, но оно того стоит.

За подробностями прошу под кат.

Іван Клімчук
08 октября 2015, 22:53
modx.pro
21
8 004
+11

[Slackify] – удобный уведомлятор в Slack для MODX

Привет, друзья.



На прошлой неделе меня однажды утром осенила мысль «а что, если» и не отпускала, пока не доделал все, что хотел. А сделал вот что: написал компонент, который добавляет набор классов, используя которые можно удобно настроить уведомления с сайта на MODX в чат Slack. Особенная фишка пакета — это уже готовые плагины для 404 ошибок, Tickets и miniShop2. Но, по порядку.

В основном репозитории – modx.com/extras/package/slackify
В репозитории modstore.pro – modstore.pro/packages/alerts-mailing/slackify

Іван Клімчук
25 сентября 2015, 00:17
modx.pro
6
21 651
+16

Tickets - виджет новых комментариев со ссылкой на модерацию


Виджет в админку с количеством новых комментов и возможностью перейти на страницу модерации.
Павел Гвоздь
23 сентября 2015, 04:09
modx.pro
8
3 073
+4

Migx поле - изменение через xpdo из фронтенда

Вечер добрый ну собвственно весь вопрос в названии темы
Nir Frost
20 сентября 2015, 20:25
modx.pro
4
5 374
0