SEQUEL.ONE

SEQUEL.ONE

С нами с 16 июня 2015; Место в рейтинге пользователей: #84

Добавление данных в таблицу базы из AjaxForm и FormIT

Всем привет. Делаю сейчас компонент, в котором пользователи добавляют свои блоги и на них могут подписываться. Застопорился на моменте когда нужно добавлять данные. Решил что через AjaxForm и FormIt надёжнее.

Вообщем делал следующим образом. Вызвал сниппет с такими параметрами:

{'!AjaxForm' | snippet : [
    'snippet' => 'FormIt',
    'form' => '@FILE components/ticketscommunity/form.tpl',
    'redirectTo' => 16,
    'hooks' => 'email,TicketsCommunityHooksBlog',
    'emailSubject' => 'Добавление нового блога "[[+name]]"',
    'emailTo' => 'admin@site.com',
    'validate' => 'alias:required',
    'validationErrorMessage' => 'В форме содержатся ошибки!',
    'successMessage' => 'Сообщение успешно отправлено'
]}
SEQUEL.ONE
16 сентября 2018, 13:59
modx.pro
2
1 464
+1

Как вывести API через чанк?

Всем привет. Столкнулся с проблемой при получения данных из API, данные выводятся через foreach(). Через var_dump() выводится всё как надо, но вот пытаюсь выводить это дело через $modx->getChunk() и у меня выводит только последний пункт из выборки. Вот код сниппета:

<?php
$tpl = $modx->getOption('tpl', $scriptProperties, 'tpl.PayPanel.rowTpl');
$plan = $modx->getOption('plan', $scriptProperties, 'vhost');
$host = $modx->getOption('paypanel_billmanager_url');
$format = $modx->getOption('paypanel_billmanager_format');
$login = $modx->getOption('paypanel_billmanager_login');
$password = $modx->getOption('paypanel_billmanager_password');

$url.= $host;
$url.= 'billmgr?out='.$format;
$url.= '&func=auth';
$url.= '&username='.$login;
$url.= '&password='.$password;

$json = file_get_contents($url);
$auth = json_decode($json);
$auth = (array)$auth->doc->auth;
$auth = $auth['$id'];

$api_url.= $host;
$api_url.= 'billmgr?auth='.$auth;
$api_url.= '&out='.$format;
$api_url.= '&func=pricelist.export';

$api_json = file_get_contents($api_url);
$api = json_decode($api_json);
$api = (array)$api->doc->pricelist;

foreach($api as $k => $v) {
    $group = (array)$v->itemtype_info->intname;
    $group = $group['$'];
    if($group == $plan) {
        $name = (array)$v->name;
        $name = $name['$'];
        $description = (array)$v->description_ru;
        $description = $description['$'];
        $addon = $v->addon;
        $price = (array)$v->price;
        unset($price['$currency']);
        
        foreach($price as $period => $p) {
            $p1 = (array)$p['0'];
            $cost1 = $p1['$cost'];
            $type1 = $p1['$type'];
            $length1 = $p1['$length'];
            $orderlink1 = $p1['$orderlink'];
            
            $p2 = (array)$p['1'];
            $cost2 = $p2['$cost'];
            $type2 = $p2['$type'];
            $length2 = $p2['$length'];
            $orderlink2 = $p2['$orderlink'];
            
            $p3 = (array)$p['2'];
            $cost3 = $p3['$cost'];
            $type3 = $p3['$type'];
            $length3 = $p3['$length'];
            $orderlink3 = $p3['$orderlink'];
            
            $p4 = (array)$p['3'];
            $cost4 = $p4['$cost'];
            $type4 = $p4['$type'];
            $length4 = $p4['$length'];
            $orderlink4 = $p4['$orderlink'];
            
            $modx->setPlaceholder('name', $name);
            $modx->setPlaceholder('description', $description);
            $modx->setPlaceholder('cost1', $cost1);
            $modx->setPlaceholder('type1', $type1);
            $modx->setPlaceholder('length1', $length1);
            $modx->setPlaceholder('orderlink1', $orderlink1);
            $modx->setPlaceholder('cost2', $cost2);
            $modx->setPlaceholder('type2', $type2);
            $modx->setPlaceholder('length2', $length2);
            $modx->setPlaceholder('orderlink2', $orderlink2);
            $modx->setPlaceholder('cost3', $cost3);
            $modx->setPlaceholder('type3', $type3);
            $modx->setPlaceholder('length3', $length3);
            $modx->setPlaceholder('orderlink3', $orderlink3);
            $modx->setPlaceholder('cost4', $cost4);
            $modx->setPlaceholder('type4', $type4);
            $modx->setPlaceholder('length4', $length4);
            $modx->setPlaceholder('orderlink4', $orderlink4);
            
            $output = $modx->getChunk($tpl);
        }
    }
}
return $output;
SEQUEL.ONE
09 мая 2018, 12:06
modx.pro
1
1 627
0

Как вывести определённые ресурсы через pdoResources в Fenom?

Всем привет. Столкнулся с проблемой при сборке сайта. Конструкция вроде этой:

{$_modx->runSnippet('!pdoResources', [
        			        'resources' => '7,8,9,10',
        			        'limit' => 4,
        			        'tpl' => ''
        			    ])}
ничего не выводит. Как правильно вывести нужные ресурсы через pdoResources в Fenom?
SEQUEL.ONE
07 апреля 2018, 14:54
modx.pro
2
1 648
0

Как изменять старую цену в miniShop2 через плагин?

Всем привет. Бьюсь над этой задачей уже пару дней, так и не могу понять как по аналогии с этим модификатором цен сделать тоже самое, но для старой цены old_price, если брать в расчёт что price по аналогичному алгоритму изменяется на сайте?

case 'msOnGetProductPrice':
		// Плагин принимает:
		// $product - объект msProductData
		// $data - массив со свойствами товара, может отсутствовать
		// $price - текущая цена товара

		// Подключаем массив значений по ссылке - так удобнее
		$values = & $modx->event->returnedValues;

		// Цена может меняться несколькими плагинами сразу, поэтому проверяем:
		if (isset($values['price'])) {
			$price = $values['price'];
		}

		// Удваиваем цену:
		$values['price'] = $price * 2;
	break;
SEQUEL.ONE
28 марта 2018, 16:07
modx.pro
1
1 469
0

Курс цен производителей

Всем привет. Делаю курс цен от производителя. Нужно к ценам умножать курс от производителя для price и old_price, если производитель у товара не указан, то выводить глобальный курс, который создан в системных настройках. Не самый изящный способ использовал. Добавил новое поле `curs` в таблицу ms2_vendors изменения в файлах модели, схемы и extjs, чтобы добавить новое поле с курсом пересчёта и установил на эти файлы CHMOD 444, чтоб при обновлении эти файлы не затёрлись.

/site.ru/core/components/minishop2/model/minishop2/msvendor.class.php
/site.ru/core/components/minishop2/model/schema/minishop2.mysql.schema.xml
/site.ru/assets/components/minishop2/js/mgr/settings/vendor/grid.js
/site.ru/assets/components/minishop2/js/mgr/settings/vendor/window.js

Затем написал плагин:

CursPrice и повесил на события msOnGetProductPrice, msOnChangeInCart, msOnAddToCart и msOnRemoveFromCart.

Код плагина:
<?php
switch ($modx->event->name) {
	case 'msOnGetProductPrice': case 'msOnChangeInCart': case 'msOnAddToCart': case 'msOnRemoveFromCart':

        $curs_global = $modx->getOption('ms2_curs_global');
        $curs_global_enable = $modx->getOption('ms2_curs_global_enable');
        $product = $modx->getObject('msProduct', $data['id']);
        $curs = $product->get('vendor.curs');
        $old_price = $product->get('old_price');

		// Подключаем массив значений по ссылке - так удобнее
		if (!isset($modx->event->returnedValues['old_price'])) {
			$modx->event->returnedValues['old_price'] = $old_price;
		}
		$old_price = & $modx->event->returnedValues['old_price'];
		$values = & $modx->event->returnedValues;
        
        
        if($curs_global_enable != 1) {
		// Удваиваем цену:
    		$values['price'] = $price * $curs;
    		$old_price = $old_price * $curs;
        } else {
            $values['price'] = $price * $curs_global;
    		$old_price = $old_price * $curs_global;
        }
        //exit(var_dump($old_price));
	break;
}
SEQUEL.ONE
22 марта 2018, 13:56
modx.pro
1
1 379
0

[РЕШЕНО] При вызове MinifyX через чанк вырезаются слэши при обработке

Всем привет. Возникли проблемы с MinifyX. Имеется вот такой код:

[[!MinifyX? 
        &minifyCss=`1`
        &minifyJs=`1`
        &cssSources=`
            assets/templates/sequelone/css/bootstrap.min.css,
            assets/templates/sequelone/css/jquery.formstyler.css,
            assets/templates/sequelone/css/font-awesome.min.css,
            assets/templates/sequelone/css/main.css
        `
        &jsSources=`
            assets/templates/sequelone/js/bootstrap.min.js,
        	assets/templates/sequelone/js/jquery.formstyler.min.js,
        	assets/templates/sequelone/js/main.js
        `
    ]]
SEQUEL.ONE
09 февраля 2018, 18:14
modx.pro
1
1 825
0

[msChart] Графики для miniShop2

msChart добавляет графики на страницу заказов miniShop2. Выглядит всё это дело так:

Доступны: Статус, Оплата, Доставка.
Марат Марабар
24 января 2018, 13:12
modx.pro
4
3 018
+13

Как автоматически очищать сессии?

Всем привет. Может кто-нибудь подсказать есть ли возможность автоматически чистить сессии?! Недавно был шокирован. Набралось в таблицу с сессиями записей на 17Гб, есть ли в modx стандартные средства или нужно всё равно писать свой скрипт очистки и вешать его на крон?
SEQUEL.ONE
08 ноября 2017, 05:53
modx.pro
3
1 192
0

Sendex и AjaxForm - подписка на рассылку ч/з ajax

Sendex, как учебный компонент, особо не развивается, но он довольно удобен и приятен в обращении изнутри сайта. В связи с чем регулярно его использую. Но вот «снаружи», на фронте, он не очень удобен. Очередная просьба от клиента «чтобы окошко появлялось, а страничка не перезагружалась», побудила переписать для себя сниппет так, чтобы потом пользовать его через ajaxform. Получилось три чанка, один сниппет и немного джаваскрипта.
mngatoff
26 августа 2017, 19:52
modx.pro
26
5 102
+8

2 адреса заполняемых клиентом

Всем привет. Делаю интернет-магазин для немецкой фирмы. Нужно при заказе указывать 2 адреса, один адрес проживания, а другой платёжный адрес. Иногда закупают товар фирмы и платёжный адрес это адрес фирмы, а другой адрес это адрес доставки. Вопрос состоит в следующем, каким образом можно создать 2 адреса для пользователя оформляющего заказ? Есть ли какие-то стандартные функции miniShop2 или самого MODX?
SEQUEL.ONE
13 февраля 2017, 16:01
modx.pro
2
910
0