Как вывести цену со скидкой в карточке товара 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 '';
Как понять какой чанк имеется в виду в логе mFilter2?
Здравствуйте!
На одном сайте есть проблема со временем генерации страницы с mFilter2.
Страница грузится в среднем минуту, товаров 6000.
В логе написано следующее:
На одном сайте есть проблема со временем генерации страницы с mFilter2.
Страница грузится в среднем минуту, товаров 6000.
В логе написано следующее:
Shopkeeper3@cartMin - как увеличит лимит отображаемого товара в мини корзине?
Здравствуйте.
В мини корзине отображается только 3 первых уникальных товара.
Как убрать лимит или увеличить его?
В мини корзине отображается только 3 первых уникальных товара.
Как убрать лимит или увеличить его?
Вывести завтрашнюю дату. Если сегодня 21 июня, вывести 22 июня
А как вывести завтрашнюю системную дату сайта (или сервера) на modx Revo.
Если сегодня 21 июня, вывести 22 июня. Дату брать системную, ну или любую другую.
Если сегодня 21 июня, вывести 22 июня. Дату брать системную, ну или любую другую.
Не работает pThumb в чанке
Добрый день.
Начал работать с изображениями на сайте. Изображения выводились, но нужно было делать их ресайз и я начал использовать pThumb. Всё шло хорошо, но уже дня 2 не могу понять почему не хочет корректно работать pThumb именно в чанке.
Начал работать с изображениями на сайте. Изображения выводились, но нужно было делать их ресайз и я начал использовать pThumb. Всё шло хорошо, но уже дня 2 не могу понять почему не хочет корректно работать pThumb именно в чанке.
Проблема с рассылкой через компонент bxsender
Всем Доброго времени суток.
Столкнулся с проблемой в модуле bxsender. При создании рассылки статус на 0. Настроено через smtp. Проверочное письмо приходит. Отправка сообщений через Ajax.
Кто сталкивался, куда копать?
Столкнулся с проблемой в модуле bxsender. При создании рассылки статус на 0. Настроено через smtp. Проверочное письмо приходит. Отправка сообщений через Ajax.
Кто сталкивался, куда копать?
Как добавить автообновление в Currency Calc
Всем привет, хотел бы узнать как осуществить обновление курса валют в Currency Calc, или есть ли встроенное автообновление
Вывод только value валюты из сниппета CurrencyCalc
Всем привет, хотел был узнать можно ли вывести только value валюты, то есть например если я вызываю usd то только его value выводиться. Если в данном сниппете нету такой возможности, могли бы вы посоветовать какое-нибудь готовое решение желательно которое выводит по курсу тенге
MODX REVO MIGX + FENOM подскажите синтаксис вложенных MIGX полей?
Приветствую, обычно MIGX поля вывожу вот так:
Обычно ПЕРВЫЙ ВЫЗОВ так:
TPL из первого вызова: tpl_collection
Понимаю что два foreach будет, но не пойму куда &value=`[[+collection]]` вписать.
Обычно ПЕРВЫЙ ВЫЗОВ так:
[[!getImageList?
&tvname=`migxtvname`
&tpl=`tpl_collection`
.....
]]
На Fenom так:{set $tvname = json_decode(1 | resource : 'migxtvname', true)}
{if $tvname}
{foreach $tvname as $item}
{$item.title}
{/foreach}
{/if}
Вот так ВТОРОЙ вызов, ВЛОЖЕННЫЙ, есть параметр VALUE.TPL из первого вызова: tpl_collection
[[getImageList?
&value=`[[+collection]]`
......
]]
А как на Fenom это будет выглядеть? Подскажите пожалуйста. Понимаю что два foreach будет, но не пойму куда &value=`[[+collection]]` вписать.
pdoResources + MIGX + processTVs
Добрый день.
Столкнулись с такой ситуаций. На сайте выводим ресурсы, у ресурса два поля img — картинка, characteristics — характеристики (MIGX)/ Вывод ресурсов на сайте делаем так:
Столкнулись с такой ситуаций. На сайте выводим ресурсы, у ресурса два поля img — картинка, characteristics — характеристики (MIGX)/ Вывод ресурсов на сайте делаем так:
pdoResources'|snippet:[
'parents'=>$_modx->resource.id,
'includeTVs'=>'img,characteristics',
'tvPrefix'=>'',
'limit'=>0,
'depth'=>0,
'tpl'=>$template
]}
В чанке характеристики выводим так:{foreach $characteristics as $char}
<div class="table-row">
<div>{$char['title']}</div>
<div>{$char['text']}</div>
</div>
{/foreach}
Появилась необходимость включить настройку processTVs (для обработки картинок в связке с Polylang). И с ней вывод характеристик не работает. В какую сторону смотреть? Спасибо