Ajax сортировка товаров + цена, выводимая сниппетом

Цена товара в шаблоне категории выводится сниппетом (необходимость возникла из-за зависимости цены товара от курса валюты)
Часть кода шаблона категории:

<div class="main-right">
[[!tmFilters?
	&filterOuterTpl=`tm2_filterOuterTpl`
	&filterTpl=`tm2_filterTpl`
	&filterNumericOuterTpl=`tm2_filterOuterTpl`
	&filterNumericTpl=`tm2_filterNumericTpl`
	&jsMap=`1`
	&toPlaceholder=`filters`
]]
<div id="filters">
	<form action="[[~[[*id]]]]" method="get">
	<input type="hidden" name="page_id" value="[[*id]]" disabled="disabled" />
		[[+filters]]
		<button type="button" onclick="tmFilters.resetFilters(); return false;">Сбросить</button>
	</form>
</div>
<div class="sorting">
	<select class="f_sortby" name="sortby" onchange="tmFilters.changeOrder(this);">
		<option value="pagetitle">по названию</option>
		<option value="price">по цене</option>
		<option value="publishedon">по дате</option>
	</select>
	&nbsp;
	<select class="f_sortdir" name="sortdir" onchange="tmFilters.changeOrder(this);">
		<option value="asc">по возрастанию</option>
		<option value="desc">по убыванию</option>
	</select>
	&nbsp;
	<select class="f_limit" name="limit" onchange="tmFilters.changeOrder(this);">
	<option value="4" selected="selected">4</option>
		<option value="10">10</option>
		<option value="20">20</option>
		<option value="40">40</option>
	</select>
	<div class="clearfix"></div>
</div>
	<div class="table-cat">
	<div class="table-head table-generat">
		<div>Сортировать по:</div>
		<div>Название модели</div>
		<div>Мощность</div>
		<div>Топливо</div>
		<div>Напряжение</div>
		<div>Наличие АВР</div>
		<div>Исполнение</div>
		<div>Цена</div>
	</div>
	<div class="table-main table-generat" id="products">
	[[!tmCatalog?
		&parents=`[[*id]]` 
		&tvPrefix=`tv.` 
		&processTVs=`1` 
		&includeTVs=`1` 
		&limit=`8` 
		&tpl_list=`product-generat` 
	]]
	<div class="clearfix"></div>
	</div>
	</div>
	<br clear="all" />
	<ul class="pagination">
	[[!+page.nav]]
	</ul>
	</div>

Код шаблона товара:

<div class="category-article category-grid">
<div class="cat-tov-img"><img src="[[+image]]" alt="[[+pagetitle]]"></div>
<div class="cat-tov-name"><a href="[[~[[+resource_id]]]][[+alias]].html" role="button">[[+pagetitle]]</a></div>
<div>[[+powernom]] кВт</div>
<div>[[+fuel]]</div>
<div>[[+voltage]]</div>
<div>[[+avr]]</div>
<div>[[+perform]]</div>
<div>
<div class="price"><span class="shk-price">[[!price? &price=`[[+price]]`]]</span></div>
<div class="price-old"><span class="shk-price">[[!priceold? &price=`[[+priceold]]`]]</span></div>
<a class="cat-tovr-but" href="[[~[[+resource_id]]]][[+alias]].html" role="button">ПОДРОБНЕЕ</a>
</div>
</div>

При изменении сортировки товара с фронтенда, сортировка проходит тормально, но цена товара из карточек пропадает.

  1. Пробовал выводить сниппет так:
[[price? &price=`[[+price]]`]]
  1. Пробовал выводить сниппетом текстовую строку (реально в нём используется JS)
    строка не выводится

Пробовал выводить сниппет так:
[[price? &price=[[+price]]]]

Надо не пробовать, а именно так и выводить. Может кэш не почистили.

Другой вариант написать сниппет чтобы работало так:

[[price:currencyRate]]

currencyRate - это сниппет, который берет значение цены из $scriptProperties['input']

Ещё можно попробовать в настройках MODX установить parser_recurse_uncacheable = Нет.

@Andchir сказал Ajax сортировка товаров + цена, выводимая сниппетом:

Пробовал выводить сниппет так:
[[price? &price=[[+price]]]]

Надо не пробовать, а именно так и выводить. Может кэш не почистили.

Чистил кеш, в том числе удаляя файлы из папки. Не помогло.

Другой вариант написать сниппет чтобы работало так:

currencyRate

currencyRate - это сниппет, который берет значение цены из $scriptProperties['input']

от currencyRate отказался пару дней назад - не смог запустить его. Он не обновлял список валют.

Ещё можно попробовать в настройках MODX установить parser_recurse_uncacheable = Нет.

Попробовал - не помогло
Возможно что проблема ещё в том, что использую MIGX ?

Ситуация немного прояснилась
С таким выводом сниппета

[[price? &price=`[[+price]]`]]

стала выводится статичная строка (при замене ею JS в сниппете)
Получается, что дело в коде сниппета:

<?php
$price = (isset($price)) ? $price : '';
if ($price != 0) {?>
	<script>
function CBR_XML_Daily_Ru(rates) {
	var EURrate = rates.Valute.EUR.Value.toFixed(2).replace('.', ',');
	var price = <? echo $price; ?>;
	price = parseInt (price, 10);
	EURrate = parseInt (EURrate, 10);
	var allprice = price * EURrate + ' руб.';
	document.write(allprice)
}
</script>
<script src='//www.cbr-xml-daily.ru/daily_jsonp.js'></script>
<?} else {
 	$result = "По запросу";
};
	return $result;

от currencyRate отказался пару дней назад - не смог запустить его. Он не обновлял список валют.

Я указал произвольное название снипета, а не какой-то конкретный. Просто [[price:price]] (как у вас) как-то не красиво смотрится.

А по вашему сниппету понятно, что он очень кривой. Отсюда и проблемы. Если у вас цена создается в JS, то сниппет вообще не нужен.

Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.