Ошибка JS при попытке обновить цену на опции, выбранные для продуктов в комплекте в Magento.

После обновления веб-сайта Magento с версии 1.8 до версии 1.9 и переключения их на тему RWD цена не обновляется при выборе вариантов продукта для связанных продуктов.

Консоль возвращает следующую ошибку при выборе параметра: -

Uncaught TypeError: не удается прочитать «обновление» свойства null

Это происходит в строке 83 bundle.js, которая равна tierPriceElement.update(tierPriceHtml);.

Это часть метода changeSelection, который целиком приведен ниже:

changeSelection: function(selection){
    var parts = selection.id.split('-');
    if (this.config['options'][parts[2]].isMulti) {
        selected = new Array();
        if (selection.tagName == 'SELECT') {
            for (var i = 0; i < selection.options.length; i++) {
                if (selection.options[i].selected && selection.options[i].value != '') {
                    selected.push(selection.options[i].value);
                }
            }
        } else if (selection.tagName == 'INPUT') {
            selector = parts[0]+'-'+parts[1]+'-'+parts[2];
            selections = $$('.'+selector);
            for (var i = 0; i < selections.length; i++) {
                if (selections[i].checked && selections[i].value != '') {
                    selected.push(selections[i].value);
                }
            }
        }
        this.config.selected[parts[2]] = selected;
    } else {
        if (selection.value != '') {
            this.config.selected[parts[2]] = new Array(selection.value);
        } else {
            this.config.selected[parts[2]] = new Array();
        }
        this.populateQty(parts[2], selection.value);
        var tierPriceElement = $('bundle-option-' + parts[2] + '-tier-prices'),
            tierPriceHtml = '';
        if (selection.value != '' && this.config.options[parts[2]].selections[selection.value].customQty == 1) {
            tierPriceHtml = this.config.options[parts[2]].selections[selection.value].tierPriceHtml;
        }
        tierPriceElement.update(tierPriceHtml);
    }
    this.reloadPrice();
},

Я вижу, что точно такая же проблема существовал здесь, но с тех пор был удален.

Учитывая, что это код, упакованный с Magento 1.9, странно, что он не работает должным образом... Я заставил тему вернуться к файлам шаблона для темы base, и при попытке изменить возникла та же ошибка. опции комплектного продукта.

JavaScript, конечно, не моя специальность (и его отладка), что-то не так с приведенным выше фрагментом? Или какие-либо предложения о том, как я могу найти причину этого?

Редактировать

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


person zigojacko    schedule 05.09.2014    source источник


Ответы (3)


В конце концов, путем множества проб и ошибок, я определил проблему, которая, в конце концов, действительно вызвана сторонним расширением.

Этим расширением-виновником был лайтбокс Magento Product Options от Iceberg Commerce на благо других, которые могут испытать это.

Это расширение перезаписывает catalog/product/view/type/bundle/option/radio.phtml собственной версией. Это собственная версия с использованием устаревшего кода (хотя расширение утверждает, что оно совместимо с Magento 1.9, на самом деле оно использует код связанных опций из более ранней версии.

Чтобы исправить (для тех, кто хочет использовать это расширение): -

Замените все содержимое этого файла (iceberg/bundledoptiondetails/catalog/product/view/type/bundle/option/radio.phtml): -

С этой версией из моего pastebin.

person zigojacko    schedule 05.09.2014

У меня была такая же проблема после перехода на Enterprise Edition. В моем случае решение было похоже на ваше: переименовать или удалить файлы в папке app/design/frontend/MYPACKAGE/MYTHEME/template/bundle/catalog/product/view/type/bundle/option, чтобы система вернулась к файлам base/default/.

person Thom Koopman    schedule 18.11.2014

У меня была аналогичная проблема с перезаписью темы пакета по умолчанию и выходом из обновления Magento 1.8 до 1.9:

app/design/frontend/{package}/default/template/bundle/catalog/product/view/type/bundle/option/

Хитрость заключалась в том, чтобы просто удалить его, или я мог бы скопировать rwd/default/../option и сохранить классы базовой темы или HTML, которые могли понадобиться.

person Thomas Bennett    schedule 06.04.2015