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);