Custom Products v2 - Datum minDate '+1d' ? (noWeekends?)

Hallo,

wie kann man bei der Datumsauswahl (Backend > Optionen) das minDate auf z.B. “+1d” setzen anstatt das Datum manuell zu wählen. Ebenso wäre die Frage, ob man die Wochenenden inaktiv setzen kann (noWeekends), wenn ja, wo?

Danke - VG

@dufink schrieb:

Hallo,

wie kann man bei der Datumsauswahl (Backend > Optionen) das minDate auf z.B. „+1d“ setzen anstatt das Datum manuell zu wählen. Ebenso wäre die Frage, ob man die Wochenenden inaktiv setzen kann (noWeekends), wenn ja, wo?

Danke - VG

Hallo,

kannst du denn überhaupt ein „alternatives“ Startdatum (also nicht nur ein festes Datum) oder bestimmte Wochentage inaktiv setzen? Soweit ich weiss, geht das bei Custom Products gar nicht.

Ein Plugin, dass dies kann, wäre auf jeden Fall dieses hier: http://store.shopware.com/scha147282265910/zusaetzliche-felder-fuer-jede-bestellposition.html .

Beste Grüße

Sebastian

Hallo,

evtl kannst du dieses Template überschreiben, bzw anpassen: engine/Shopware/Plugins/Local/Frontend/SwagCustomProducts/Views/frontend/swag_custom_products/options/date.tpl

Dort mit Hilfe von Smarty Funktionen das “data-min” Attribut auf today +1 setzen. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 Like

@sschreier schrieb:

Ein Plugin, dass dies kann, wäre auf jeden Fall dieses hier: http://store.shopware.com/scha147282265910/zusaetzliche-felder-fuer-jede-bestellposition.html .

 

Danke erst einmal für die schnelle Antwort. Das Plugin habe ich auch schon gesehen, nur ist dort wieder das “Problem” mit der Zeit (timePicker)… ich brauch im Idealfall genau das hier: https://eonasdan.github.io/bootstrap-datetimepicker/#disabled-days-of-the-week (Datum+Zeit), wobei die Zeit noch definiert werden müsste (bspw. nur von 08.00 - 18.00Uhr) etc.

@dufink schrieb:

@sschreier schrieb:

Ein Plugin, dass dies kann, wäre auf jeden Fall dieses hier: http://store.shopware.com/scha147282265910/zusaetzliche-felder-fuer-jede-bestellposition.html .

 

Danke erst einmal für die schnelle Antwort. Das Plugin habe ich auch schon gesehen, nur ist dort wieder das “Problem” mit der Zeit (timePicker)… ich brauch im Idealfall genau das hier: https://eonasdan.github.io/bootstrap-datetimepicker/#disabled-days-of-the-week (Datum+Zeit), wobei die Zeit noch definiert werden müsste (bspw. nur von 08.00 - 18.00Uhr) etc.

Hallo,

du benötigst also ein Feld für das Datum (datepicker) und ein Feld für die Zeit (timepicker)? Oder muss der “Endwert” (Datum + Uhrzeit) in ein Feld übergeben werden?

Beste Grüße

Sebastian

Hallo Sebastian,

also wenn die Kunden das “verstehen” das diese Datum+Zeit in einem Feld auswählen/angeben, dann ist es natürlich “schlanker” das mit einem Feld zu lösen. Natürlich ginge es auch, dass man dies getrennt macht, 1 Feld Datum und 1 Feld Zeit. Fand die bootstrap Variante/Lösung vom Ansatz recht cool und funktionell. Mit dem Plugin für zusätzliche Bestellpositionen würde es sicher funktionieren wenn man dort “manuell” die Felder konfiguriert, nur finde ich den Ansatz von Custom Products v2 recht chic und simpel, nur fehlt hier halt die Möglichkeit zur Definition von einigen Dingen für Date- & TimePicker. (minDate, noWeekends etc.) :frowning:

Der gedankliche Lösungsansatz ist derzeit bei dem Plugin “zusätzliche Bestellpositionen” in Kombination mit einem normalen Date- & Timepicker bzw. mit der bootstrap Variante. Da ich aber nur ungern im Core herum fummel und auch bei Updates keine grauen Haare bekommen möchte, wäre mir eine “saubere” Lösung lieber und auch leichter editierbar für andere Backend-Nutzer.

VG

@dufink schrieb:

Hallo Sebastian,

also wenn die Kunden das “verstehen” das diese Datum+Zeit in einem Feld auswählen/angeben, dann ist es natürlich “schlanker” das mit einem Feld zu lösen. Natürlich ginge es auch, dass man dies getrennt macht, 1 Feld Datum und 1 Feld Zeit. Fand die bootstrap Variante/Lösung vom Ansatz recht cool und funktionell. Mit dem Plugin für zusätzliche Bestellpositionen würde es sicher funktionieren wenn man dort “manuell” die Felder konfiguriert, nur finde ich den Ansatz von Custom Products v2 recht chic und simpel, nur fehlt hier halt die Möglichkeit zur Definition von einigen Dingen für Date- & TimePicker. (minDate, noWeekends etc.) :(

Der gedankliche Lösungsansatz ist derzeit bei dem Plugin “zusätzliche Bestellpositionen” in Kombination mit einem normalen Date- & Timepicker bzw. mit der bootstrap Variante. Da ich aber nur ungern im Core herum fummel und auch bei Updates keine grauen Haare bekommen möchte, wäre mir eine “saubere” Lösung lieber und auch leichter editierbar für andere Backend-Nutzer.

VG

Hallo,

sicher könnte man das Plugin “Zusätzliche Felder für jede Bestellpositionen” noch dahingehend erweitern, das man neben einem “Datumsfeld” auch ein “Zeitfeld” festlegen kann, wo man dann auch Start- und Endzeit festlegen kann. Es müsste dann nur noch ein “Timepicker” integriert werden, der eine Art “Auswahlfeld” für die Uhrzeit integriert (und ähnlich wie der Datepicker kaum Platz benötigt).

Bei dem Plugin kann man ja die Felder entweder für alle Artikel oder nur für spezielle Artikel aktivieren.

Die Lösung https://eonasdan.github.io/bootstrap-datetimepicker/#disabled-days-of-the-week finde ich eher umständlich und nicht wirklich handlich für den Endkunden, da Sie auch nicht optimal “responsiv” ist und auch sehr viel Platz verbraucht. Ist aber auch Ansichtssache. Aus meiner Sicht sollte es aber immer eine Lösung sein, die man auch gut auf dem Smartphone nutzen kann.

Beste Grüße

Sebastian

@dufink schrieb:

Hallo,

wie kann man bei der Datumsauswahl (Backend > Optionen) das minDate auf z.B. „+1d“ setzen anstatt das Datum manuell zu wählen. Ebenso wäre die Frage, ob man die Wochenenden inaktiv setzen kann (noWeekends), wenn ja, wo?

Danke - VG

Hey zusammen,

ich sehe hier überhaupt kein Problem. Der Datepicker unterstützt die Anforderung komplett. Es muss nur die Konfiguration korrekt gesetzt werden:

   $('#test').pickadate({
        min: true,
        max: 1,
        firstDay: 2,
        disable: [1, 7]
    });

Demo: http://jsfiddle.net/b4w3yuyx/

Dies sind die entsprechenden Felder. Ich gehe einmal kurz die jeweiligen Einstellungen durch:

  • min: true - das kleinste auswählbare Datum ist heute
  • max: 1 - Range zum kleinsten Datum ist 1 Tag
  • firstDay: 2 - Datepicker startet Montag und nicht Sonntag
  • disable: [1, 7] - deaktiviert die Tage 1 (Sonntag) und 7 (Samstag)

Du müsstest jetzt nur hingehen und mit einen Plugin Override (Modify jQuery plugins) die „defaults“ mit dem entsprechenden Optionen erweitern. Plugin-Name ist „swagCustomProductsDatePicker“.

Viele Grüße,
Stephan Pohl  Shopware

 

1 Like

Hallo Stephan,

das ist genau die Info die ich brauchte um das „sauber“ lösen zu können. Vielen vielen Dank. Eins noch, weißt du ob man den „Override“ auch mittels PHP inkl. dem Script dann lösen kann, sodass man die aktuelle Zeit ausließt und sich dann das minDate ändert? Beispiel. Heute vor 16.00Uhr kann ich den morgigen Tag noch auswählen, Heute nach 16.00Uhr kann ich erst übermorgen auswählen als minDate. (halbwegs verständlich?)

Danke und VG

@dufink schrieb:

Hallo Stephan,

das ist genau die Info die ich brauchte um das “sauber” lösen zu können. Vielen vielen Dank. Eins noch, weißt du ob man den “Override” auch mittels PHP inkl. dem Script dann lösen kann, sodass man die aktuelle Zeit ausließt und sich dann das minDate ändert? Beispiel. Heute vor 16.00Uhr kann ich den morgigen Tag noch auswählen, Heute nach 16.00Uhr kann ich erst übermorgen auswählen als minDate. (halbwegs verständlich?)

Danke und VG

Gerne, gerne Smile Das geht natürlich auch. Persönlich würde ich es per JavaScript lösen, aber du kannst natürlich dir einfach zwei Template-Variablen zur Verfügung stellen:

{$now = strtotime('now')}
{$afternoon = strtotime("today 16:00")}

{if $option['min_date']} data-min="{$option['min_date']}"{else} data-min="{if $now < $afternoon}true{else}1{/if}"{/if}

Wie gesagt, ich würde es in Javascript machen:

function todayOrTomorrow() {
  var now = new Date(),
      afternoon = new Date();

  afternoon.setHours(16, 0, 0, 0);

  return (now < afternoon) ? true : 1;
}

alert(todayOrTomorrow());

In diesen Beispiel gebe ich entweder “true” zurück (heute) oder ab 16:00 Uhr “1”, sprich ab morgen.

Viele Grüße,
Stephan Pohl  Shopware

2 Likes

Hallo [@Stephan Pohl](http://forum.shopware.com/profile/2/Stephan Pohl „Stephan Pohl“)‍,

ich habe gerade versucht den Datepicker mit deiner Anleitung auf „frühestenns 3 Tage in der Zukunft“ einzustellen:

{literal}
   
 
	$.overridePlugin('swagCustomProductsDatePicker', {
	    defaults: {
	      parentWrapperSelector: '.custom-products--option',
	      hiddenName: true,
	      formatSubmit: 'yyyy-mm-dd',
	      disable: null,
	      max: null,
	      min: 3
	    }
	});
   
{/literal}

Sollte das so funktionieren? In welcher Datei gehört dieser Code eingefügt?

Hoffe auf deine Hilfe :slight_smile:

Hey @wolfgang007‍,

dein Code sieht soweit gut aus. Wichtig für dich ist die Einstellung “min: 3”. Den JavaScript Code selbst packst du in eigene JavaScript Datei in deinen eigenen Theme und bindest die Datei in der Theme.php ein - siehe: Using CSS and JavaScript in themes

Viele Grüße,
Stephan Pohl  Shopware

Danke [@Stephan Pohl](http://forum.shopware.com/profile/2/Stephan Pohl „Stephan Pohl“)‍ für den Hinweis.

Ich habe die folgende js-Datei jetzt eingebunden, aber es kommt der js-Fehler „value.split is not a function“. Kannst du mir da weiterhelfen?

;(function($) {
    'use strict';
    
	$.overridePlugin('swagCustomProductsDatePicker', {
	  defaults: {
		  parentWrapperSelector: '.custom-products--option',
		  hiddenName: true,
		  formatSubmit: 'yyyy-mm-dd',
		  disable: null,
		  max: null,
		  min: 3
	   }
	});

})(jQuery);

Beste Grüße

 

[@Stephan Pohl](http://forum.shopware.com/profile/2/Stephan Pohl „Stephan Pohl“)‍ dieses Schnipsel hat bis vor kurzem funktioniert um das Mindestdatum auf +3 Tage zu setzten.

Hat sich hier etwas am Datepicker geändert oder sollte dies weiterhin funktionieren?

Shopware 5.3.7 und Custom Products 4.0.1

		// Datepicker Datum +3 Tage
		$.overridePlugin('swagCustomProductsDatePicker', {
		  formatMinMaxDate: function () {
		    var me = this;
		
		    if (me.opts.min) {
		        me.opts.min = me.createDateArray(me.opts.min);
		    } else {
		        me.opts.min = 3;
		    }
		
		    if (me.opts.max != null) {
		        me.opts.max = me.createDateArray(me.opts.max);
		    } else {
		        me.opts.max = undefined;
		    }
		   }
		});

Freue mich auf jede Antwort.

Beste Grüße

Habe es nun mit Smarty über das Template gelöst: 

data-field="true" data-minDate="{"+3 days"|date_format:"%Y-%m-%d"}"

Eine andere Möglichkeit wäre es über Javascript. 

Leider habe ich die Defaults vom swDatePicker nicht überschreiben können. Weiß jemand warum bzw. welcher Listener der richtige ist?

// Datepicker Datum +3 Tage
$.overridePlugin('swDatePicker', {
	this.defaults.minDate = new Date().fp_incr(3);
});