Управление конфликтом расширений в файлах js


У меня есть расширение и (сообщество), которое переключает изображения продуктов при изменении параметров настраиваемого продукта. Это отлично работает.
Я также разработал некоторое расширение, которое изменяет элементы select настраиваемых параметров на изображения и метки. Опять же, это работает так, как ожидалось.
Теперь вопрос. Им обоим необходимо удалить из блока head файл javascript varien/configurable.js, который обрабатывает настраиваемые продукты, и добавить свой собственный файл. Так в основном оба они переопределяют класс js Product.Config. Им обоим необходимо переопределить функцию initialize в классе, поэтому я не могу добавить в свое расширение Product.Config.prototype.initialize = function(){...}. Или я могу?
Как вы можете себе представить, они не работают вместе.
Есть ли какой-либо способ разрешить такого рода конфликты без клонирования изменений, которые расширение сообщества вносит в таблицу в мой файл js, и на основе этого?

Author: Marius, 2013-09-05

1 answers

Как упоминалось в моем комментарии выше, в зависимости от используемого кода вы можете подклассировать прототип продукта.Настраивайте и наследовайте от него. Так, например, что-то вроде этого:

var MyProduct.Config = Class.create(Product.Config, {
    initialize: function($super, config){
        $super(config); //this calls the parent initialize
        //do your custom stuff here        
    }
});

Более подробная информация о наследовании прототипа находится здесь.

Как вы уже догадались впоследствии, вы бы использовали

spConfig = MyProduct.Config(...)

Вместо

spConfig = Product.Config(...)
 4
Author: Kristof at Fooman, 2013-09-05 19:44:12