Werbung / Banner buchen
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Versandart nur an best. Wochentagen freigeben

    arno_nuehm

    • Mitglied
    • Beiträge: 112
    • Geschlecht:
    Versandart nur an best. Wochentagen freigeben
    am: 05. Oktober 2012, 10:47:58
    Hallo Forengemeinde,

    wir bieten versch. Expressarten an, u.a. auch Samstagszustellung.
    Jetzt sieht es natürlich unschön aus, wenn der Samstagsexpress schon Montags angeboten wird.
    Gibt es eine Möglichkeit, das entsprechende Versandmodul nur an Freitagen einzublenden?
    In welcher Variable steht denn der Wochentag? Steht dieser überhaupt zur Verfügung?

    Gruß
    Manu

    Linkback: https://www.modified-shop.org/forum/index.php?topic=22631.0

    jannemann

    • modified Team
    • Beiträge: 6.289
    • Geschlecht:
    Re: Versandart nur an best. Wochentagen freigeben
    Antwort #1 am: 05. Oktober 2012, 23:50:04
    Hallo Manu,

    könntest du nicht das Datum auf dem Server abfragen?

    Schöne Grüße,
    Jan

    frangulus

    • Fördermitglied
    • Beiträge: 284
    • Geschlecht:
    Re: Versandart nur an best. Wochentagen freigeben
    Antwort #2 am: 06. Oktober 2012, 02:07:51
    In welcher Variable steht denn der Wochentag? Steht dieser überhaupt zur Verfügung?

    Es gibt eine PHP Funktion dazu: http://de2.php.net/manual/de/function.date.php
    Code: PHP  [Auswählen]
    $Wochentag=date("N")
    sollte weiterhelfen.

    MfG
    Frangulus

    hendrik

    • Experte
    • Beiträge: 2.038
    Re: Versandart nur an best. Wochentagen freigeben
    Antwort #3 am: 06. Oktober 2012, 19:06:21
    Die Versandarten liegen in includes/modules/shipping/

    Jede Datei einthält eine Klasse (class), darin ein Konstruktor
    function klassenname()
    oder
    function __construct()

    In dieser Funktion machst du eine Einfügung.

    ..ermitteln des Wochentags..
    if( wochentag nicht erlaubt ) {
      $this->enabled = false;
    }

    Wenn $this->enabled beim Verlassen der Funktion auf false steht, steht das Versandmodul nicht mehr zur Auswahl.

    Gruß
    Hen

    arno_nuehm

    • Mitglied
    • Beiträge: 112
    • Geschlecht:
    Re: Versandart nur an best. Wochentagen freigeben
    Antwort #4 am: 07. Oktober 2012, 10:00:59
    super, danke für die hinweise! :-)

    Wir blenden nun die Versandart für Express Samstag nur noch freitags ein. Finden wir kundenfreundlicher.

    Zur Lösung:
    in der gewünschten includes/modules/shipping/*.php die Klasse erweitern um
    Code: PHP  [Auswählen]
    $wd
    Sieht dann etwa so aus
    Code: PHP  [Auswählen]
    class * {
        var $code, $title, $description, $icon, $enabled, $num_dpes, $wd;
    danach nach
    Code: PHP  [Auswählen]
     $this->enabled = ((MODULE_SHIPPING_DPES_STATUS == 'True') ? true : false);
    folg. einfügen
    Code: PHP  [Auswählen]
    $this->wd = date("N");
    if($this->wd != 5) {
    $this->enabled = false;
    }
    Die numerische Zahl steht hier für den Wochentag.

    fertig!

    Bei Zeit und Laune nehme ich das mal noch in die function install() des Versandmoduls auf, sodass man den Wochentag einfach über das Backend auswählen kann.

    Danke nochmal an alle!

    arno_nuehm

    • Mitglied
    • Beiträge: 112
    • Geschlecht:
    Re: Versandart nur an best. Wochentagen freigeben
    Antwort #5 am: 07. Oktober 2012, 11:06:21
    Estetikfrage:
    Kann man nur die Auswahlmöglichkeit der Versandart unterdrücken, diese jedoch weiterhin eingeblendet lassen?

    Barcelo

    • Mitglied
    • Beiträge: 103
    • Geschlecht:
    Re: Versandart nur an best. Wochentagen freigeben
    Antwort #6 am: 23. März 2016, 19:07:57
    Hallo zusammen,

    vielen Dank an arno_nuehm für die Code-Zeilen - genau danach hatte ich gesucht!  :thumbs:

    Ich habe entsprechend dieser Wiki-Anleitung mir das DHL-Modul kopiert und angepasst.

    Jedoch wollte ich den Tag noch erweitern um ein Zeitfenster - genauer: Donnerstag 15:00 bis Freitag 14:00

    Dementsprechend habe ich das von arno_nuehm noch ein wenig angepasst/erweitert:

    Klasse zusätzlich zum  $wd erweitert um
    Code: PHP  [Auswählen]
    $wh
    also am Ende z.B.: , $wd, $wh;

    Dann habe ich wie folgt "umgebaut":
    Code: PHP  [Auswählen]
              $this->wd = date('N');
              date_default_timezone_set('CET');
              $this->wh = date('H:i');
              if(($this->wd != 4) && ($this->wd != 5)) {
                      $this->enabled = false;
              }
              if((($this->wd == 4) && ($this->wh >= "15:00")) || (($this->wd == 5) && ($this->wh <= "14:00"))) {
                      $this->enabled = true;
              }

    date_default_timezone_set('CET');
    -> habe ich vorsichtshalber rein genommen - ggf. kann das auch entfallen!

    Funktioniert einwandfrei und vielleicht ist's ja für jemanden hilfreich  ;-)
    Sollte das noch eleganter gehen = Info gerne willkommen.

    Gruß,
    Barcelo

    Barcelo

    • Mitglied
    • Beiträge: 103
    • Geschlecht:
    Re: Versandart nur an best. Wochentagen freigeben
    Antwort #7 am: 25. März 2016, 16:23:23
    Korrektur - es funktionierte nicht ganz - so stimmt's nun aber:
    Code: PHP  [Auswählen]
              $this->wd = date('N');
              date_default_timezone_set('CET');
              $this->wh = date('H:i');
              if(($this->wd != 4) && ($this->wd != 5)) {
                      $this->enabled = false;
              }
              if((($this->wd == 4) && ($this->wh >= "15:00")) || (($this->wd == 5) && ($this->wh <= "14:00"))) {
                      $this->enabled = true;
              } else {
                      $this->enabled = false;
              }
    :-B
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware
    4 Antworten
    2088 Aufrufe
    30. November 2016, 19:29:06 von insertinto
    3 Antworten
    1783 Aufrufe
    28. Dezember 2016, 14:31:55 von Uhrenmensch
               
    anything