Модификация цены Minishop2 по своему сценарию
Добрый день!
Возможно ли выполнить модификацию цены Minishop2 (может быть в плане доработки msOptionsPrice2) по следующему сценарию:
1. Есть цена за кубометр строительных блоков — скажем 8000 руб/м3.
2. Каждому товару-блоку присвоена опция «количество штук в кубе» — к примеру блоков размера «600x200x300 мм» в кубе содержится 27,7 шт.
3. Если разделить цену за куб на количество штук в кубе — получим цену блока за штуку. Т.е. в нашем случае это будет 8000: 27.7 = 288,8.
И вопрос в том, как выполнить такую модификацию? Чтобы «цена за куб» делилась на (указанное в опции) «количество штук в кубе» и чтобы в итоге получилась«цена за штуку»?
Возможно ли выполнить модификацию цены Minishop2 (может быть в плане доработки msOptionsPrice2) по следующему сценарию:
1. Есть цена за кубометр строительных блоков — скажем 8000 руб/м3.
2. Каждому товару-блоку присвоена опция «количество штук в кубе» — к примеру блоков размера «600x200x300 мм» в кубе содержится 27,7 шт.
3. Если разделить цену за куб на количество штук в кубе — получим цену блока за штуку. Т.е. в нашем случае это будет 8000: 27.7 = 288,8.
И вопрос в том, как выполнить такую модификацию? Чтобы «цена за куб» делилась на (указанное в опции) «количество штук в кубе» и чтобы в итоге получилась«цена за штуку»?
Создание ресурсов через фронтенд
Есть ли готовые решения для создания ресурсов пользователями?
Хотелось бы иметь возможность через фронтенд так же давать заполнять тв пользователям.
Хотелось бы иметь возможность через фронтенд так же давать заполнять тв пользователям.
Не работает "поиск" на сайте
Поисковая строка не выдает результат поиска. Нужен человек кто исправит данный недочет
electrodetaly.ru
electrodetaly.ru
Login: Вывод сообщения после нажатия кнопки
Как мне вывести сообщение, после изменения пароля?
Не обновляются превьюшки
Всем привет!
MODX Revolution 2.7.1-pl
miniShop2 2.5.0-pl
Внес изменения в MS2 Images и пытаюсь обновить превью у товаров через Console кодом из документации
MODX Revolution 2.7.1-pl
miniShop2 2.5.0-pl
Внес изменения в MS2 Images и пытаюсь обновить превью у товаров через Console кодом из документации
Подключение к двум modx для синхронизации
Может кто сталкивался?
Есть 2 проекта на одном серваке. Есть ли возможность с нового проекта через modalConsole подключиться к старому имея на вооружении такие же конструкции как и в новом: $modx_old->getObject('modResource', $id) — но с данными от старого проекта.
P.S. Хочу забрать данные с базы старого проекта, но перебрав и видоизменив загрузить на новый.
Есть 2 проекта на одном серваке. Есть ли возможность с нового проекта через modalConsole подключиться к старому имея на вооружении такие же конструкции как и в новом: $modx_old->getObject('modResource', $id) — но с данными от старого проекта.
P.S. Хочу забрать данные с базы старого проекта, но перебрав и видоизменив загрузить на новый.
Привязка статей к товару minishop2
Есть интернет магазин на minishop2.
Есть статьи по товарам или околотематические. В самой статье я указываю «Сопутствующие товары» (ид через запятую) и показываю товары о которых идет речь в статье.
Все замечательно работает.
Теперь задача обратная — хочу показывать статьи в карточке товара или категории товара и статьи определять по полю «Сопутствующие товары» (ид через запятую) которые указаны в статье.
В карточке товара у меня есть его ИД. И есть список статей в которых есть поле relatedProducts.
Надо выбрать статьи в которых ИД товара присутствует в поле relatedProducts.
Как это сделать?
Есть статьи по товарам или околотематические. В самой статье я указываю «Сопутствующие товары» (ид через запятую) и показываю товары о которых идет речь в статье.
Все замечательно работает.
Теперь задача обратная — хочу показывать статьи в карточке товара или категории товара и статьи определять по полю «Сопутствующие товары» (ид через запятую) которые указаны в статье.
В карточке товара у меня есть его ИД. И есть список статей в которых есть поле relatedProducts.
Надо выбрать статьи в которых ИД товара присутствует в поле relatedProducts.
Как это сделать?
помогите оптимизировать php скрипт
Добрый день!
Нужна воздмездная помощь.
Есть php скрипт. Отдельно от сайта работает. Но стоит вставить его в сниппет и получаю белый экран.
Готов оплатить (в разумных пределах)
Нужна воздмездная помощь.
Есть php скрипт. Отдельно от сайта работает. Но стоит вставить его в сниппет и получаю белый экран.
Готов оплатить (в разумных пределах)
FormIt валидация формы
Здравствуйте, с помощью FormIt создаются ресурсы в них есть tv phone хочу сделать такую валидацию если ресурс с номером телефона 777777 существует в определенной категории то форма выдает ошибку. Так же в форме есть select где указывается категория. Как я понял это нужно делать с помощью preHooks но пока не могу разобраться как получить данные из формы. Hooks понятно там все просто получаю данные из формы. Может кто подсказать?
Как вывести цену со скидкой в карточке товара msDiscount ?
msDiscount выводит в каталоге, корзине всё норм, но в карточке товара не выводит, в доках не нашёл как вывести цену со скидкой в карточке товара
Код ниже уже готовый, проверенный, работает отлично по группам, по скидкам и так далее, выводит именно цену товара, а не саму скидку, для вывода самой скидкой нужно воспользоваться тем что написано в доках
Код ниже уже готовый, проверенный, работает отлично по группам, по скидкам и так далее, выводит именно цену товара, а не саму скидку, для вывода самой скидкой нужно воспользоваться тем что написано в доках
<?php
/** @var msDiscount $msDiscount */
/** @var msDiscount $price */
/** @var pdoTools $pdoTools */
if(empty($price)){
return '';
}
$pdoTools = $modx->getService('pdoTools');
$msDiscount = $modx->getService('msDiscount');
$date = $pdoTools->getStore('msd_date');
$usergroups = array_keys($msDiscount->getUserGroups($modx->user->id));
$sales = !empty($date)
? $msDiscount->getSales($date, true)
: $msDiscount->getSales();
if (empty($sale)) {
$sale = $pdoTools->getStore('msd_sale');
}
if (!empty($sale)) {
$tmp = array_map('trim', explode(',', $sale));
foreach ($sales as $id => $sale) {
if (!in_array($id, $tmp)) {
unset($sales[$id]);
}
}
}
if (!empty($row) && is_array($row)) {
$mode = 'prepare';
if (!empty($row['id'])) {
$id = $row['id'];
}
}
else {
$mode = 'standalone';
if (!empty($frontend_css)) {
$frontend_css = str_replace('[[+assetsUrl]]', $msDiscount->config['assetsUrl'], $frontend_css);
$modx->regClientCSS($frontend_css);
}
if (!empty($frontend_js)) {
$frontend_js = str_replace('[[+assetsUrl]]', $msDiscount->config['assetsUrl'], $frontend_js);
$modx->regClientScript($frontend_js);
}
if (empty($id)) {
$id = $modx->resource->id;
}
}
$remains = $discount = 0;
if (!empty($id) && !empty($sales)) {
foreach ($sales as $sale) {
// Check user groups
if (!empty($sale['users'])) {
$required = array();
foreach ($sale['users'] as $gid => $type) {
if ($type == 'out' && in_array($gid, $usergroups)) {
unset($sales[$idx]);
continue(2);
}
if ($type == 'in') {
$required[] = $gid;
}
}
if (!empty($required) && !array_intersect($required, $usergroups)) {
unset($sales[$idx]);
continue;
}
}
// Check product groups
if (!empty($sale['products'])) {
$groups_in = $groups_out = array();
foreach ($sale['products'] as $gid => $type) {
if ($type == 'out') {
$groups_out[] = $gid;
unset($sale['products'][$gid]);
}
else {
$groups_in[] = $gid;
}
}
}
if (!empty($groups_out) || !empty($groups_in)) {
$ids = $modx->getParentIds($id);
$ids[] = $id;
$q = $modx->newQuery('msCategoryMember', array('product_id' => $id));
$q->select('category_id');
$tstart = microtime(true);
if ($q->prepare() && $q->stmt->execute()) {
$modx->queryTime += microtime(true) - $tstart;
$modx->executedQueries++;
if ($tmp = $q->stmt->fetchAll(PDO::FETCH_COLUMN)) {
$ids = array_merge($ids, $tmp);
}
}
$ids = array_unique($ids);
$where = count($ids) > 1
? array('document:IN' => $ids)
: array('document' => $ids[0]);
$q = $modx->newQuery('modResourceGroupResource', $where);
$q->select('document_group');
$tstart = microtime(true);
if ($q->prepare() && $q->stmt->execute()) {
$modx->queryTime += microtime(true) - $tstart;
$modx->executedQueries++;
$groups = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
if (!empty($groups_out) && array_intersect($groups_out, $groups)) {
continue;
}
elseif (!empty($groups_in) && !array_intersect($groups_in, $groups)) {
continue;
}
}
}
// Product match
$tmp_remains = ($sale['ends'] != '0000-00-00 00:00:00')
? strtotime($sale['ends']) - time()
: 0;
if (strpos($sale['discount'], '%') !== false && (empty($discount) || strpos($discount, '%') !== false)) {
if ($sale['discount'] > $discount) {
$discount = $sale['discount'];
$remains = $tmp_remains;
}
}
elseif (is_numeric($sale['discount']) && is_numeric($discount)) {
if ($sale['discount'] > $discount) {
$discount = $sale['discount'];
$remains = $tmp_remains;
}
}
else {
$discount = $sale['discount'];
$remains = $tmp_remains;
}
}
}
if($discount && $remains){
return (((int)$price * (100 - (int)$discount )/100));
}
return '';