Как вывести цену со скидкой в карточке товара 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 '';
Vladimir
23 июня 2022, 11:58
modx.pro
1 052
0

Как понять какой чанк имеется в виду в логе mFilter2?

Здравствуйте!
На одном сайте есть проблема со временем генерации страницы с mFilter2.
Страница грузится в среднем минуту, товаров 6000.
В логе написано следующее:
Lori
23 июня 2022, 10:26
modx.pro
556
0

Shopkeeper3@cartMin - как увеличит лимит отображаемого товара в мини корзине?

Здравствуйте.
В мини корзине отображается только 3 первых уникальных товара.
Как убрать лимит или увеличить его?
Сергей
22 июня 2022, 11:41
modx.pro
483
0

Вывести завтрашнюю дату. Если сегодня 21 июня, вывести 22 июня

А как вывести завтрашнюю системную дату сайта (или сервера) на modx Revo.
Если сегодня 21 июня, вывести 22 июня. Дату брать системную, ну или любую другую.
Игорь
21 июня 2022, 12:38
modx.pro
1 141
-1

Не работает pThumb в чанке

Добрый день.
Начал работать с изображениями на сайте. Изображения выводились, но нужно было делать их ресайз и я начал использовать pThumb. Всё шло хорошо, но уже дня 2 не могу понять почему не хочет корректно работать pThumb именно в чанке.
NEREBROV
20 июня 2022, 21:10
modx.pro
1 009
0

Проблема с рассылкой через компонент bxsender

Всем Доброго времени суток.
Столкнулся с проблемой в модуле bxsender. При создании рассылки статус на 0. Настроено через smtp. Проверочное письмо приходит. Отправка сообщений через Ajax.
Кто сталкивался, куда копать?
Николай Ермошин
20 июня 2022, 17:02
modx.pro
772
0

Как добавить автообновление в Currency Calc

Всем привет, хотел бы узнать как осуществить обновление курса валют в Currency Calc, или есть ли встроенное автообновление
Zhan
20 июня 2022, 11:36
modx.pro
651
0

Вывод только value валюты из сниппета CurrencyCalc

Всем привет, хотел был узнать можно ли вывести только value валюты, то есть например если я вызываю usd то только его value выводиться. Если в данном сниппете нету такой возможности, могли бы вы посоветовать какое-нибудь готовое решение желательно которое выводит по курсу тенге
Zhan
19 июня 2022, 21:52
modx.pro
606
0

MODX REVO MIGX + FENOM подскажите синтаксис вложенных MIGX полей?

Приветствую, обычно MIGX поля вывожу вот так:

Обычно ПЕРВЫЙ ВЫЗОВ так:
[[!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]]` вписать.
Роман
19 июня 2022, 21:33
modx.pro
676
0

pdoResources + MIGX + processTVs

Добрый день.
Столкнулись с такой ситуаций. На сайте выводим ресурсы, у ресурса два поля 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). И с ней вывод характеристик не работает. В какую сторону смотреть? Спасибо
Александр Быковский
18 июня 2022, 12:56
modx.pro
866
0