msAddLinked

06 августа 2018, 11:31

Описание

Добавление связанных товаров в виде дополнительных опций с увеличением цены добавляемого товара. В любой форме добавления товара в корзину можно выводить дополнительные товары, которые будут добавлены в качестве опций с последующим увеличением цены. В корзине и письмах возле товара выводятся добавленные опции.

ВАЖНО: в списке связанных выводятся только те товары, для которых в связях текущий товар или указанный сниппету msAddLinked.input является главным.

Сниппет msAddLinked.input

Предназначен для вывода списка связанных товаров и полей ввода. По умолчанию выводятся чекбоксы, но, в теории, можно задать любой тип, поддерживаемый атрибутом type тэга input. Проверена корректная работа типов text, number. Если в этих полях ввода указывать число, опции к товару в корзине будут добавлены в соответствующем количестве.

Параметры

Название Значение по умолчанию Описание
&tpl tpl.msAddLinked.input Чанк оформления
&product 0 (Текущий товар) ID главного товара
&link 0 (Все связи) ID связи
&inputType checkbox Тип поля ввода для каждого связанного товара
&priceTarget #price Селектор HTML элемента для вставки измененной цены
&priceOrigTarget #msal_price_original Селектор HTML элемента для получения изначальной цены
&fieldName pagetitle Поле ресурса для вывода названия
&toPlaceholder 0 Если указан этот параметр, то результат будет сохранен в плейсхолдер, вместо прямого вывода на странице

Сниппет msAddLinked.info

Предназначен для вывода в корзине и в письмах списка добавленных к товару опций.

Параметры

Название Значение по умолчанию Описание
&tpl tpl.msAddLinked.input Чанк оформления
&option {} Значение опции товара со связями в JSON
&fieldName pagetitle Поле ресурса для вывода названия

Пример вызова:

[[!msAddLinked.info? &option=`[[+option.msal]]`]]

В синтаксисе Fenom:

{$_modx->runSnippet('msAddLinked.info', ['option' => $product.options.msal])}

Если в корзине выводятся другие опции товаров, тогда следующий блок:

{foreach $product.options as $option}
    {var $options = $options ~ $option ~ '; '}
{/foreach}

необходимо заменить на такой:

{foreach $product.options as $k => $option}
    {if $k != 'msal'}
        {var $options = $options ~ $option ~ '; '}
    {/if}
{/foreach}

Помимо этого, стандартные опции выводятся таким образом:

<div class="small">
    {$product.options | join : '; '}
</div>

Для исключения вывода сырого JSON необходимо обрамить следующим образом:

{if $product.options.msal?}
    {var $msal = $product.options.msal}
    {unset $product.options.msal}
{/if}
<div class="small">
    {$product.options | join : '; '}
</div>
{if $msal?}
    {$_modx->runSnippet('msAddLinked.info', ['option' => $msal])}
    {unset $msal}
{/if}

Системные настройки

Название Значение по умолчанию Описание
&msal_frontend_js [[+jsUrl]]web/default.js Путь к файлу JS
&msal_variable msal Название переменной в опциях