backend_settings_stocks
Добавляет собственные условия формирования правил списания товаров с разных складов. Плагин должен вернуть массив, каждый элемент которого является массивом со следующими ключами: 'id' (string) — ID правила для сохранения в поле rule_type таблицы shop_stock_rules в формате [ID плагина]_[ID правила]; 'name' (string) — локализованное название условия; 'init_html' (string) — HTML-код, добавляемый на страницу в виде скрытого блока; удобно для запуска дополнительного JavaScript-кода. Также см. описание хука frontend_checkout_stock_rules о том, как правила выбора склада применяются во фронтенде.
Shop-Script
Входящие параметры
передаются по ссылке
передаются по ссылке
$params array Массив параметров.
$params['rules'] array Правила из таблицы shop_stock_rules.
$params['stocks'] array Склады, возвращаемые методом shopHelper::getStocks().
$params['rules'] array Правила из таблицы shop_stock_rules.
$params['stocks'] array Склады, возвращаемые методом shopHelper::getStocks().
… код плагина …
Результат работы плагина
$return['custom_html']
Необязательный фрагмент HTML-кода для отображения внизу страницы настроек складов.
Shop-Script
Пример кода плагина
PHP
/** * As an example, let us define limits for quantities of ordered items * each automatically selecting one of available stocks */ public function backendSettingsStocks($params) { $title = _wp('By ordered product quantity'); $select = waHtmlControl::getControl(waHtmlControl::SELECT, 'rules[%ID%][rule_data]', array( 'options' => array( 10 => _wp('10+ items'), 5 => _wp('6–10 items'), 1 => _wp('1–5 items'), ), 'title' => $title, 'control_wrapper' => '<p>%s%s</p>' )); $html = <<<HTML <script type="text/template" id="{$this->id}_condition_template"> {$select} </script> <script> (function() { var template_form = $('#{$this->id}_condition_template').html(); var table_tbody = $('#s-settings-stock-rules-form table tbody').first(); table_tbody.on('rules:condition_init.{$this->id}', '.stock-rule-condition', function(evt) { var condition_wrapper = $(this); var tmpl = template_form.replace(/%ID%/g, evt.rule_id); condition_wrapper.find('input[name$="[rule_data]"]').replaceWith($.parseHTML(tmpl)); condition_wrapper.find('select[name$="[rule_data]"]').val(evt.rule_data); }); })(); </script> HTML; return array( 'id' => $this->id, 'name' => $title, 'init_html' => $html, 'custom_html' => '<script>/* E.g., some additional JavaScript snippet */</script>' ); }