Magento2 - Получить идентификатор простого продукта, который связан с настраиваемым продуктом на странице списка продуктов


Я хочу передать идентификатор продукта в теге rel в классе swatch-option, который находится на странице списка образцов.

Я знаю, что это должно быть сделано через swatch-renderer.js но не в состоянии выполнить код.

console.log($.widget.options);
                id = this.id;
                type = parseInt(optionConfig[id].type, 10);
                value = optionConfig[id].hasOwnProperty('value') ? optionConfig[id].value : '';
                thumb = optionConfig[id].hasOwnProperty('thumb') ? optionConfig[id].thumb : '';
                label = this.label ? this.label : '';
                attr =
                    ' id="' + controlId + '-item-' + id + '"' +
                    ' aria-checked="false"' +
                    ' aria-describedby="' + controlId + '"' +
                    ' tabindex="0"' +
                    ' option-type="' + type + '"' +
                    ' option-id="' + id + '"' +
                    ' option-label="' + label + '"' +
                    ' aria-label="' + label + '"' +
                    ' option-tooltip-thumb="' + thumb + '"' +
                    ' option-tooltip-value="' + value + '"' +
                    ' role="option"';
Author: Amit Bera, 2018-09-14

1 answers

Вам придется сначала передать $widget в опции Renderswatch, например -

_RenderSwatchOptions: function (config, controlId, $widget) {

Затем в функции _RenderControls обновите вызов функции опции образца с помощью 3 аргументов, таких как -

options = $widget._RenderSwatchOptions(item, controlLabelId, $widget),

После того, как этот код заработает -

                var relVal = '';
                $.each($widget.options.jsonConfig.attributes, function () {
                    var item = this;
                    if(item.id == config.id) {
                        $.each(item.options,function(){
                           // var option = this;
                            if(id == this.id) {
                                $.each(this.products,function (index, value) {
                                    relVal = value;
                                });
                             }

                        });
                    }
                });
                attr =
                ' id="' + controlId + '-item-' + id + '"' +
                ' aria-checked="false"' +
                ' aria-describedby="' + controlId + '"' +
                ' tabindex="0"' +
                ' option-type="' + type + '"' +
                ' option-id="' + id + '"' +
                ' option-label="' + label + '"' +
                ' aria-label="' + label + '"' +
                ' option-tooltip-thumb="' + thumb + '"' +
                ' option-tooltip-value="' + value + '"' +
                ' rel="' + relVal + '"' +
                ' role="option"';
 1
Author: Gagan, 2018-09-14 12:15:01