man

man

С нами с 04 января 2016; Место в рейтинге пользователей: #233

Обновление стоимости доставки в админке

Бывает иногда необходимо изменить способ доставки и стоимость доставки у ранее созданного заказа. И хотелось бы чтобы это выглядело так.

Приступим :)
lexikon
27 января 2017, 20:09
modx.pro
18
5 553
+4

Вывод заказов пользователя и товаров заказа

Нужна была возможность вывода заказов клиента и товаров в этих заказах. Велосипедов много, мой один из них.

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 = 'У вас пока еще нет заказов.';
  }
}
Всем успехов.
Юрий Фомин
27 января 2017, 15:51
modx.pro
15
3 347
+2

Мониторим свои сайты via modMonitor на node.js

Всем привет!

Для начала предлагаю зайти вот сюда: modmonitor.ru/
Если это не интересно, то можно дальше и не читать. А если интересно и хотите себе такое же, прошу под кат.

Fi1osof
24 января 2017, 21:16
modx.pro
3
4 977
+14

Можно ли взломать сайт на MODX?

Добрый день!
Такая проблема случилась:
Выгрузил сайт клиенту на хостинг, а он включил заднюю, нанял какого-то сисадмина, чтобы помог ему сменить все доступы и не хочет платить.
Как бы напрашивается вопрос: Есть ли такая возможность взломать MODX, чтобы справедливость восторжествовала? Возможно за $
Артем
23 января 2017, 20:04
modx.pro
23
7 655
+1

modNodejs - Интеграция Nodejs в MODx

Всем доброе утро. Сегодня представляю на всеобщее обозрение компонент над которым я потел последние несколько дней.

Заголовок говорит сам за себя, это интеграция Nodejs в MODx.
Так зачем он нужен? Для realtime! Как сказал Николай: «технологии диктуют».

Простейший пример: в minishop2 поступил заказ, а менеджер гуляет по админке\сайту, вот что он увидит:

Без перезагрузки страницы и тд, можно выполнить любой js по наступлению эвента.
but1head
21 января 2017, 03:11
modx.pro
22
12 414
+27

Собственные модификаторы Fenom

Продолжаю разработку новой версии modstore.pro и хочу поделиться простым способом подключения своих модификаторов.

Обычный способ все знают: нужно создать сниппет, который будет принимать переменные $input и $options и вызвать его в чанке вот так:
{$variable | snippet}
Но
  • Сниппеты бывают совсем небольшие и создавать их на каждый чих не хочется
  • Вызов сниппета, это всё-таки дополнительная нагрузка
  • Лично я уже полностью перешел на файлы, и создавать запись в БД для сниппета, только ради его связи с файлом мне совсем не хочется
То есть, я хочу просто вызывать некий код в качестве модификатора. И в этом мне поможет событие pdoToolsOnFenomInit, которое появилось в pdoTools 2.6.0 и мало кто это заметил.
Василий Наумкин
14 января 2017, 05:49
modx.pro
29
8 240
+14

Хостинг приложений. Интеграция с Billmanager 5


Недавно я делился решением для быстрой настройки веб-сервера Настройка веб-сервера Ubuntu 16.04. Видео [Git].
Настало время прикрутить это дело к веб-интерфейсу. Благо разработчики Billmanager предоставили возможность управлять сервером простыми Shell скриптами.
Alexander V
21 декабря 2016, 15:00
modx.pro
3
3 433
+8

Загрузка изображений в галерею miniShop2 из фронтэ

Доброго времени суток.

Не получается решить проблему с загрузкой изображений для созданного из фронта товара. Пробовал делать загрузку при помощи процессора miniShop2 но что то результата нет.

Собственно последние строчи хука FormIt:
// тут идет создание нового товара с опциями

$res->save(); //  сохранение товара

$miniShop2 = $modx->getService('miniShop2');
$response = $miniShop2->runProcessor('mgr/gallery/upload', array('id' => $res->get("id"), $_FILES['file']));
Eugene Generalov
12 декабря 2016, 22:26
modx.pro
4
4 884
0

[mspYaCassa] - Яндекс Касса метод оплаты miniShop2

[mspYaCassa] — оплата через kassa.yandex.ru/



Платежи через Яндекс Кассу— Самыми популярными способами: с банковских карт, электронными деньгами и не только. Статистика в онлайне, зачисление на ваш счет.

Особенности
  • работа только с новым miniShop2 (version =>2.4.0-beta2)
  • гибкая кастомизация оплаты
Володя
08 декабря 2016, 11:24
modx.pro
2
8 752
+14

Вложенный migx. Как прикрепить много файлов?

Товарищи! Есть таблица migx со списком домов (наз. houses), в эту таблица вложен еще один migx (uploadFiles) для загрузки файлов, чтобы для каждого дома можно было загрузить несколько файлов. у uploadFiles такая настройка
[[migxResourceMediaPath? &pathTpl=`assets/resourceimages/{id}/` &createFolder=`1`]].
Из-за этого получается каждой строке домов соответствуют одни и те же файлы так как указано {id}. По идее должен быть путь assets/resourceimages/{id}/{MIGX_id}/, но это не срабатывает! Как быть?
vofka
06 декабря 2016, 09:50
modx.pro
2
1 185
0