Tipps für folgenden Fehler: Uncaught TypeError: $.overridePlugin is not a function

Hallo Zusammen,

Sorry für den neuen Thread. Aber leider bekommt man in anderen absolut keine Antwort mehr. Daher neu. Entschuldigt. Aber an was könnte es liegen wenn ich andauernd die Fehler Meldung bekomme:

Uncaught TypeError: $.overridePlugin is not a function

Meine Quelldatei -> unter meine custom template/theme im src Ordner:

$(function () {
    $.overridePlugin('swSearch', {
		/**
         * Triggers an AJAX request with the given search term.
         *
         * @public
         * @method triggerSearchRequest
         * @param {String} searchTerm
         */
        triggerSearchRequest: function (searchTerm) {
						
            var countDigitsMatch = searchTerm.match(/[0-9\\/]/g);
            var countDigits = countDigitsMatch == null ? 0 : countDigitsMatch.length;
            var countSpacesMatch = searchTerm.match(/ /g);
            var countSpaces = countSpacesMatch == null ? 0 : countSpacesMatch.length;
            var countTotal = searchTerm.length;
            var hasMoreDigitsThanChars = countDigits >= (countTotal - countSpaces - countDigits);
            
            if (searchTerm.match(/^[0-9\\/]*$/) !== null || hasMoreDigitsThanChars)
            {
                searchTerm = searchTerm.replace(/ /g, '').replace(/\//g, '_');
				console.log(searchTerm);
            }
            
            var me = this;

            me.$loader.fadeIn(me.opts.animationSpeed);

            me.lastSearchTerm = $.trim(searchTerm);

            $.publish('plugin/search/onSearchRequest', [me, searchTerm]);

            $.ajax({
                'url': me.requestURL,
                'data': {
                    'sSearch': me.lastSearchTerm
                },
                'success': function (response) {
                    me.showResult(response);
                    $.publish('plugin/search/onSearchResponse', [me, searchTerm, response]);
                }
            });
        }
    });
	
});

Für Eure Hilfe bin ich sehr dankbar.

 

LG Tobias

und du hast die js datei pfad in die $javascript array in deine Theme.php addiert?
Using CSS and JavaScript in themes

wenn ja, vielleicht ohne die unnötige closure funktion probieren.

1 „Gefällt mir“

Hi wontfix,

ja das habe ich gemacht. Danach kommt eben im Frontent diese Fehler Meldung “Uncaught TypeError: $.overridePlugin is not a function”

Habe auch nochmal nachgeschaut, das ich nicht irgendwo extra Jquery nochmal einbinde.

Auch so bekomme ich weiterhin diesen Fehler.

$.overridePlugin('swSearch', {
		/**
         * Triggers an AJAX request with the given search term.
         *
         * @public
         * @method triggerSearchRequest
         * @param {String} searchTerm
         */
        triggerSearchRequest: function (searchTerm) {
						
            var countDigitsMatch = searchTerm.match(/[0-9\\/]/g);
            var countDigits = countDigitsMatch == null ? 0 : countDigitsMatch.length;
            var countSpacesMatch = searchTerm.match(/ /g);
            var countSpaces = countSpacesMatch == null ? 0 : countSpacesMatch.length;
            var countTotal = searchTerm.length;
            var hasMoreDigitsThanChars = countDigits >= (countTotal - countSpaces - countDigits);
            
            if (searchTerm.match(/^[0-9\\/]*$/) !== null || hasMoreDigitsThanChars)
            {
                searchTerm = searchTerm.replace(/ /g, '').replace(/\//g, '_');
				console.log(searchTerm);
            }
            
            var me = this;

            me.$loader.fadeIn(me.opts.animationSpeed);

            me.lastSearchTerm = $.trim(searchTerm);

            $.publish('plugin/search/onSearchRequest', [me, searchTerm]);

            $.ajax({
                'url': me.requestURL,
                'data': {
                    'sSearch': me.lastSearchTerm
                },
                'success': function (response) {
                    me.showResult(response);
                    $.publish('plugin/search/onSearchResponse', [me, searchTerm, response]);
                }
            });
        }
});

 

hab eben in vanilla shopware 5.4.5 mit folgende theme probiert:

namespace Shopware\Themes\Foo;

use Doctrine\Common\Collections\ArrayCollection;
use Shopware\Components\Form as Form;
use Shopware\Components\Theme\ConfigSet;

class Theme extends \Shopware\Components\Theme
{
	protected $extend = 'Responsive';
	protected $name = 'Foo';
	protected $description = 'test theme';
	protected $author = 'bar';
	protected $license = 'MIT';
	protected $javascript = [
		'src/js/example.js'
	];
}

und deine javascript datei in frontend/_public/src/js/example.js addiert und es funktioniert.

was mir aufegaffallen ist:

  • theme muss ‚Responsive‘ erweitern (weil nur diese hat die jquery plugins)
  • der pfad in $javascript ist implizit relativ zu frontend/_public/ (grauenhaft!)

Mhm, ich benutze noch die 5.0.2, aber da ist es noch ungefair das gleiche:

 

Egal was ich mache, aber finde absolut nicht den Fehler :-( 

  • der pfad in $javascript ist implizit relativ zu frontend/_public/ (grauenhaft!) - Wird aber doch so überall angegeben.

Lg Tobias

Schon mal mit async laden probiert?

window.addEventListener('load', onloadEvent, false);
function onloadEvent(){
    document.asyncReady(function() {
  $.overridePlugin('swSearch', {
         ......
​ });
    }
}