Magento 2 |Измените выпадающие значения для продуктов комплекта на пользовательский атрибут - PullRequest
0 голосов
/ 25 октября 2019

У нас есть продукты с выпадающими меню. По умолчанию раскрывающиеся опции связанного продукта содержат «название продукта» и «цену». Например:

Значение 1 = «Размер черной рубашки M + $ 9,95»Значение 2 = «Размер черной рубашки L + $ 9,95»

Чего я пытаюсь достичь: в раскрывающихся списках не должно быть ни названия товара, ни цены, а атрибут продукта «размер» каждого товара. Пример: в комплекте товара есть опция раскрывающегося списка, тогда как эта опция содержит различные размеры одной и той же рубашки:

Значение 1 = «Размер M»Значение 2 = «Размер L»

Что я сделал: Я переписал следующий блок: \ Magento \ Bundle \ Block \ Catalog \ Product \ View \ Type \ Bundle \ Option.php

Я изменил функцию «getSelectionTitlePrice», чтобы получить атрибут размера и удалить имя продукта ицена.

$ priceTitle = $ this-> escapeHtml ($ selection-> getSize ()); Результат: В исходном коде результат, как и ожидалось: раскрывающиеся значения состоят только из атрибута размера каждого продукта.

Проблема: Внешний интерфейс по-прежнему показывает «название продукта» + «цена». Я предполагаю, что это вызвано тем, что какой-то скрипт перезаписывает вывод. К сожалению, я не знаком с JS / Knockout.

Может кто-нибудь подсказать, как подавить перезаписываемые значения? Надеюсь, что это имеет смысл.

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 28 октября 2019

Файл js, который обновляет заголовок:

vendor/magento/module-bundle/view/base/web/js/price-bundle.js

Функция: _applyOptionNodeFix

Эта функция обновляет параметры раскрывающегося списка с помощью js.

Вы можете переопределитьэто к файлам темы:

app/design/theme/package/Magento_Bundle/web/js/price-bundle.js

и закомментируйте последнюю строку в функции $option.html(template(toTemplate)); до //$option.html(template(toTemplate));

Для дополнительных изменений вы можете поиграть в файле / функции.

...