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' => 'Сообщение успешно отправлено'
]}
Как вывести 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;
Как вывести определённые ресурсы через pdoResources в Fenom?
Всем привет. Столкнулся с проблемой при сборке сайта. Конструкция вроде этой:
{$_modx->runSnippet('!pdoResources', [
'resources' => '7,8,9,10',
'limit' => 4,
'tpl' => ''
])}
ничего не выводит. Как правильно вывести нужные ресурсы через pdoResources в Fenom? Как изменять старую цену в 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;
Курс цен производителей
Всем привет. Делаю курс цен от производителя. Нужно к ценам умножать курс от производителя для price и old_price, если производитель у товара не указан, то выводить глобальный курс, который создан в системных настройках. Не самый изящный способ использовал. Добавил новое поле `curs` в таблицу ms2_vendors изменения в файлах модели, схемы и extjs, чтобы добавить новое поле с курсом пересчёта и установил на эти файлы CHMOD 444, чтоб при обновлении эти файлы не затёрлись.
Затем написал плагин:
CursPrice и повесил на события msOnGetProductPrice, msOnChangeInCart, msOnAddToCart и msOnRemoveFromCart.
Код плагина:
/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;
}
[РЕШЕНО] При вызове 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
`
]]
[msChart] Графики для miniShop2
Как автоматически очищать сессии?
Всем привет. Может кто-нибудь подсказать есть ли возможность автоматически чистить сессии?! Недавно был шокирован. Набралось в таблицу с сессиями записей на 17Гб, есть ли в modx стандартные средства или нужно всё равно писать свой скрипт очистки и вешать его на крон?
Sendex и AjaxForm - подписка на рассылку ч/з ajax
Sendex, как учебный компонент, особо не развивается, но он довольно удобен и приятен в обращении изнутри сайта. В связи с чем регулярно его использую. Но вот «снаружи», на фронте, он не очень удобен. Очередная просьба от клиента «чтобы окошко появлялось, а страничка не перезагружалась», побудила переписать для себя сниппет так, чтобы потом пользовать его через ajaxform. Получилось три чанка, один сниппет и немного джаваскрипта.
2 адреса заполняемых клиентом
Всем привет. Делаю интернет-магазин для немецкой фирмы. Нужно при заказе указывать 2 адреса, один адрес проживания, а другой платёжный адрес. Иногда закупают товар фирмы и платёжный адрес это адрес фирмы, а другой адрес это адрес доставки. Вопрос состоит в следующем, каким образом можно создать 2 адреса для пользователя оформляющего заказ? Есть ли какие-то стандартные функции miniShop2 или самого MODX?