ajax в корзине

MODX Revolution 2.4.2-pl
Shopkeeper3 3.2.3-pl

Здравствуйте.
Столкнулся с проблемой при добавлении/обновлении товаров в корзине.

Задача:

  • избежание отображения пустых значений TV- параметров характеристик товара в строке корзины при использовании одного шаблона страницы товара для разных типов товаров.
    В конкретном примере - отображение показателей мощности и др. параметров энергосберегающих ламп и исключение их отображения ввиду их отсутствия у светильников.

Проблема:

  • после добавления товаров разного типа: лампочек и светильников, у лампочек доп. параметры отображаются корректно, у светильников же они обрезаются (ввиду их отсутствия и, соответственно, пустых значений на странице редактирования товара) и не отображаются.
    Но. После первичного добавления товара с пустыми значениями в строке, в каждой ячейке, отвечающей за доп. параметр "вылазит" символ
`

, который является крайним знаком в фильтре перед закрывающими квадратными скобками.
Пример шаблона строки корзины с фильтрами:

<tr>
    <td>[[+name]]</td>
	<td>[[+shk_bulbBase:!empty=`Цоколь [[+shk_bulbBase]]`]]</td>
	<td>[[+shk_bulbPower:!empty=`Мощность [[+shk_bulbPower]]`]]</td>
	<td>[[+shk_lightColor:!empty=`Свечение [[+shk_lightColor]]`]]</td>
    <td><span class="badge">x[[+count]]</span></td>
    <td class="text-right">[[+price_count]] [[+currency]]</td>
	<td><a href="[[+url_del_item]]" title="удалить из корзины" class="remove shk-del">
		<i class="fa fa-times"></i>
	</a></td>
</tr>

т.е. символ

`

после TV-параметра

[[+shk_bulbBase]]

к примеру.

После повторного обновления страницы этот символ исчезает.

Решение:

  • поковыряли код в файле shopkeeper.js и добавили пару строк в секции "/**
    • Аякс-запрос для отправки данных и получения HTML-кода обновленной корзины
      */".

Конкретно в этом месте

$.ajax({
            type: "POST",
            cache: false,
            dataType: 'json',
            url: SHK.options.site_base_url + 'assets/components/shopkeeper3/connector_fe.php',
            data: params,
            success: function(data){

			//правка 
				if (data.hasOwnProperty('html'))
					data.html = data.html.replace( /`/gm, '' );
			//правка 

                SHK.showLoading( false, shopCart );

Это конечно костыль (две строчки между комментариями "//правка"), но он ловит указанный "залётный" html и убирает его. После этой правки отображение данных в корзине стало корректным.

Может пригодится для быстрого решение подобной проблемы тем, у кого она возникла.
Спасибо.

В таких случаях рекомендую использовать сниппет If
https://rtfm.modx.com/extras/revo/if

@Andchir использовал этот сниппет в более ранних версиях shopkeeper- были глюки с отображением, поэтому перешёл на phx.

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