# Warum funktioniert der folgende window.StateManager.removePlugin code nicht?

**URL:** <https://forum.shopware.com/t/warum-funktioniert-der-folgende-window-statemanager-removeplugin-code-nicht/48054>\
**Category:** Programmierung\
**Created:** [5. September 2017 um 09:07 UTC](https://forum.shopware.com/t/warum-funktioniert-der-folgende-window-statemanager-removeplugin-code-nicht/48054 "2017-09-05T09:07:00Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![\_Max](https://avatars.discourse-cdn.com/v4/letter/_/ecd19e/32.png) [@\_Max](https://forum.shopware.com/u/_Max)\
**Post date:** [5. September 2017 um 09:07 UTC](https://forum.shopware.com/t/warum-funktioniert-der-folgende-window-statemanager-removeplugin-code-nicht/48054/1 "2017-09-05T09:07:00Z")

</div>

Hallo,

ich möchte gerne einige Plugins nicht nutzen und dazu wollte ich, wie von shopware empfohlen, die removePlugin Funktion des StateManagers nutzen, leider funktionieren alle Plugins nocht obowhl die die JS Datei richtig aufgerufen wird:

```
function destroyJQ() {

window.StateManager.removePlugin('*[data-menu-scroller="true"]', 'swMenuScroller');

window.StateManager.removePlugin('*[data-image-slider="true"]', 'swImageGallery');

window.StateManager.removePlugin('.product--image-zoom', 'swImageZoom');

}

document.onreadystatechange = function () {
if (document.readyState == "complete") {
destroyJQ();
}
if (document.readyState == "interactive") {
}
}

$.subscribe('plugin/swAjaxVariant/onRequestData', function () {
destroyJQ();
})

```

&nbsp;

Edit: Habe folgenden Beitrag gefunden wo die destroyPlugin Funktion in Kombination mit removePlugin genutzt wird:

> **[Mobile footer ohne swCollapsePanel](https://forum.shopware.com/discussion/37295/mobile-footer-ohne-swcollapsepanel)**
>
> hi, ich möchte meinen mobile footer gern immer aufgeklappt anzeigen. In der jquery.shopware-responsive.js ist dafür folgendes verantwortlich: // Slide panel .addPlugin('.footer--column .column--headline', 'swCollapsePanel', { ...

Bei der Lösung funktioniert es dann auch einwandfrei. Nur leider führt destroyPlugin() amgewandt auf „swImageGallery“ bei mir zu „“&nbsp;TypeError: me.$template is null"

&nbsp;

```
   window.StateManager.destroyPlugin('*[data-menu-scroller="true"]', 'swMenuScroller');
    window.StateManager.removePlugin('*[data-menu-scroller="true"]', 'swMenuScroller');
 
  // window.StateManager.destroyPlugin('*[data-image-slider="true"]', 'swImageGallery');
  // window.StateManager.removePlugin('*[data-image-slider="true"]', 'swImageGallery');

    window.StateManager.destroyPlugin('.product--image-zoom', 'swImageZoom');
    window.StateManager.removePlugin('.product--image-zoom', 'swImageZoom');

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![\_Max](https://avatars.discourse-cdn.com/v4/letter/_/ecd19e/32.png) [@\_Max](https://forum.shopware.com/u/_Max)\
**Post date:** [8. September 2017 um 13:37 UTC](https://forum.shopware.com/t/warum-funktioniert-der-folgende-window-statemanager-removeplugin-code-nicht/48054/2 "2017-09-08T13:37:45Z")

</div>

Würde gerne wissen warum ich"&nbsp;TypeError: me.$template is null" als return beim destroyen des swImageGallery Jquery Plugins bekomme. Keiner der das weiß?

---

<div class="post-metadata">

**Author:** ![Daniel\_S1](https://avatars.discourse-cdn.com/v4/letter/d/e56c9b/32.png) [@Daniel\_S1](https://forum.shopware.com/u/Daniel_S1)\
**Post date:** [14. Dezember 2017 um 17:39 UTC](https://forum.shopware.com/t/warum-funktioniert-der-folgende-window-statemanager-removeplugin-code-nicht/48054/3 "2017-12-14T17:39:23Z")

</div>

> [@\_Max\_ schrieb:](https://forum.shopware.com/profile/22952/_Max_ "\_Max\_")
> 
> Würde gerne wissen warum ich"&nbsp;TypeError: me.$template is null" als return beim destroyen des swImageGallery Jquery Plugins bekomme. Keiner der das weiß?

&nbsp;

I am trying to do the same and having the same error in the console, could you solve this problem?

---

<div class="post-metadata">

**Author:** ![sira](https://avatars.discourse-cdn.com/v4/letter/s/6de8d8/32.png) [@sira](https://forum.shopware.com/u/sira)\
**Post date:** [21. Juli 2018 um 22:26 UTC](https://forum.shopware.com/t/warum-funktioniert-der-folgende-window-statemanager-removeplugin-code-nicht/48054/4 "2018-07-21T22:26:52Z")

</div>

This seems to be still an issue.

The problem here is a missing condition check on me.$template within the plugin’s destroy() method. The variable is NULL until the onClick() method got called once - which won’t be the case when you try to destroy at startup.

My fast but rather ugly/inefficient fix was to use an override…

```
;(function ($) {
    'use strict';

    $.overridePlugin('swImageGallery', {
        destroy: function () {
            var me = this;
			
			// Fix for missing condition check on this.$template.
			me.$template = $('');
			
			// Fix for left over event listeners causing TypeError on click event.
			me._off(me._$imageContainer.find(me.opts.imageSlideSelector), 'click');
			me._off(window, 'keydown');
			
			me.superclass.destroy.apply(me, arguments);
        }
	});
})(jQuery);

```

&nbsp;
