Skip to content
msAddLinked
msAddLinked
Добавление связанных товаров в виде опций с увеличением цены
  1. Компоненты
  2. msAddLinked

msAddLinked

Описание

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

Важно

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

Сниппет msAddLinked.input

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

Параметры msAddLinked.input

НазваниеЗначение по умолчаниюОписание
&tpltpl.msAddLinked.inputЧанк оформления
&product0 (Текущий товар)ID главного товара
&link0 (Все связи)ID связи
&inputTypecheckboxТип поля ввода для каждого связанного товара
&priceTarget#priceСелектор HTML элемента для вставки измененной цены
&priceOrigTarget#msal_price_originalСелектор HTML элемента для получения изначальной цены
&fieldNamepagetitleПоле ресурса для вывода названия
&toPlaceholder0Если указан этот параметр, то результат будет сохранен в плейсхолдер, вместо прямого вывода на странице

Сниппет msAddLinked.info

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

Параметры msAddLinked.info

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

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

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

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

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

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

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

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

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

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

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

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

fenom
{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_variablemsalНазвание переменной в опциях