Custom Products: Boxen auch für Pflichtfelder anfangs zugeklappt darstellen

Hallo zusammen,

wir haben das Plugin von Custom Products gekauft, bekommen aber nicht wirklich support von Shopware. Daher die Frage an die Community.

Die Felder vom Konfigurator sollen immer zugeklappt starten, auch bei Pflichtfeldern. Wir haben recht viele Optionen die Pflichtfelder sind und wenn das alles aufgeklappt ist, wird die Liste riesig.

 

Das entsprechende Template habe ich bereits gefunden:

/custom/plugins/SwagCustomProducts/Resources/frontend/js/jquery.swag-custom-products-collapse-panel.js

 

Wenn ich  //$panel.show(); in Zeile 60 auskommentiere bleiben die Panels zugeklappt. Pflichtfelder müssen aber jetzt zwei mal angeklickt werde bevor sie sich öffnen. Das liegt sicher dran das hier der entsprechende Status am Anfang noch nicht zugewiesen ist.

Beispiellink (nicht verlinkt wegen google): shop.hartl-racing.de/de/speichenraeder/ktm/alpina-tubeless-wheels-supermoto-ktm-smr-exc-sxf-45.html#63d3ce6d15ff3f804a68ffe2891d1d19

 

Hat jemand ne Idee was ich noch in dieser Datei anpassen muss und vor allem wie ich ein JS updatesicher anpasse?

Anbei der Code aus der JS

 

VG Frank

 

;(function($, window) {
    'use strict';

    /**
     * Small helper plugin which toggles panels.
     */
    $.plugin('swagCustomProductsCollapsePanel', {

        /** @object Default plugin configuration */
        defaults: {

            /** @string Parent container selector */
            parentWrapperSelector: '.custom-products--option',

            /** @string Panel selector */
            customProductWrapperSelector: '.custom-product--option-wrapper',

            /** @string Active class */
            activeCls: 'is--active',

            /** @string Sliding speed in milli seconds */
            slideToggleSpeed: 175
        },

        /**
         * Initializes the plugin and applies the necessary event listeners.
         *
         * @returns void
         */
        init: function() {
            var me = this;

            me._on(me.$el, 'click', $.proxy(me.onTogglePanel, me));

            me.displayRequiredPanels();
			

            $.publish('plugin/swagCustomProductsCollapsePanel/init', [me]);
        },

        /**
         * Searches for active panels and shows them on start up.
         *
         * We have to use jQuery to show / hide the boxes cause `display: block` would
         * destroy the panel animations.
         *
         * @returns void
         */
        displayRequiredPanels: function() {
            var me = this;

            me.$el.parents(me.opts.parentWrapperSelector).each(function(i, item) {
                var $parent = $(item),
                    $panel = $parent.find(me.opts.customProductWrapperSelector);

                if (!$parent.hasClass(me.opts.activeCls)) {
                    return;
                }

                //$panel.show();
            });

            $.publish('plugin/swagCustomProductsCollapsePanel/displayRequiredPanels', [me]);
        },

        /**
         * Event listener method which will be fired when the user clicks `me.$el`.
         *
         * The method selects the parent DOM node of the clicked element and toggles
         * panel DOM node.
         *
         * @param e {jQuery.Event}
         */
        onTogglePanel: function(e) {
            var me = this,
                $target = $(e.target),
                $parent = $target.parents(me.opts.parentWrapperSelector),
                $panel = $parent.find(me.opts.customProductWrapperSelector);

            e.preventDefault();

            if ($parent.hasClass(me.opts.activeCls)) {
                $parent.removeClass(me.opts.activeCls);
                $panel.stop().slideUp(me.opts.slideToggleSpeed);
            } else {
                $parent.addClass(me.opts.activeCls);
                $panel.stop().slideDown(me.opts.slideToggleSpeed);
            }

            $.publish('plugin/swagCustomProductsCollapsePanel/onTogglePanel', [me, $panel, $parent, $target]);
        }
    });

    $(function() {
        StateManager.addPlugin('*[data-custom-products-collapse-panel="true"]', 'swagCustomProductsCollapsePanel');
    });
})(jQuery, window);

 

Problem eins habe ich wohl gelöst. Man muss nicht nur die Funktion des Panel aufklappens auskommentieren sondern auch noch die CSS Klasse is–active entfernen.

$parent.removeClass(me.opts.activeCls);
				
//$panel.show();

 

Bleibt noch die Frage wie ich ein JS File updatesicher anlege.

2 „Gefällt mir“

@Kahmoonb schrieb:

Problem eins habe ich wohl gelöst. Man muss nicht nur die Funktion des Panel aufklappens auskommentieren sondern auch noch die CSS Klasse is–active entfernen.

$parent.removeClass(me.opts.activeCls);

//$panel.show();

 

Bleibt noch die Frage wie ich ein JS File updatesicher anlege.

Hast du bereits eine Lösung gefunden? Wäre auch sehr daran interessiert.

 

MfG 

Nein, ich ändere das nach jedem Update bzw. überschreibe die ganze JS :slight_smile:

Alles klar, aber danke trotzdem schonmal wegen der Lösung oben :wink:

Es gibt ja einen Nachfolger des Custom Products Plugin, welches unter engine/Shopware/Plugins/Community/Frontend/ installiert ist. Gibt es hierfür bereits eine Lösung für die zweite Version des Custom Products Plugin ? 

Ah habe die Entsprechende Datei gefunden:
/engine/Shopware/Plugins/Community/Frontend/SwagCustomProducts/Views/frontend/swag_custom_products/detail/default/index.tpl

Hier muss in der Zeile 29 folgender if-Block gelöscht werden: 

 {if $option['required']} is--active{/if}

 

MfG Nac