International / Standard Bestimmungsland

Thema wurde von maikguthauser, 16. Februar 2018 erstellt.

  1. maikguthauser

    maikguthauser Aktives Mitglied

    Registriert seit:
    9. Juli 2014
    Beiträge:
    39
    Danke erhalten:
    1
    Danke vergeben:
    11
    Hi Zusammen,
    wenn man einen Shop mit mehreren Bestimmungsländern betreibt fine ich ein paar Sachen im Standard nicht ganz glücklich gelöst. Daher eine kurze Anleitung wie man die Sachen hier und da umgehen kann.

    1. Die Auswahl des Wohnortes
    Im Standard wählt der Shop hier das erste Land in der Liste, würde also Albanien im Standard zeigen sofern der Kunde noch nichts gewählt hat. Ich möchte aber, dass hier ein von mir definiertes Land steht.
    upload_2018-2-16_9-43-26.png

    Um hier im Standard etwas anderes stehen zu haben gehen wir in das Verzeichnis system\classes\ und editieren die Datei CountriesBoxContentView.inc.php wie folgt:

    Im Codeblock
    PHP:
        public function prepare_data()
       {
           
    $this->set_content_data('country_data'$this->buildCountryArray());
           
    $this->set_content_data('URL'$this->buildUrl());
           
           if(
    $this->customerCountryIsoCode !== null)
           {
               
    $this->set_content_data('SELECTED_COUNTRY', (string)$this->customerCountryIsoCode);
           }
           else
           {
               
    $this->set_content_data('SELECTED_COUNTRY''');
           }
       }
    fügen wir in der ELSE Anweisung einfach das ISO Länderzeichen ein welches wir als Standard möchten:

    PHP:
           else
           {
               
    $this->set_content_data('SELECTED_COUNTRY''DE');
           }
       }
    2. Versandkosten im Warenkorb
    Die Versandkosten im Warenkorb werden für Gäste immer für das im Adminbereich eingestellte Standardlieferland berechnet (außer man wählt seinen Wohnort aus und klickt auf Speichern).
    Diese Einstellung wird unter "Mein Shop" im Adminbereich gemacht, bei den Feldern Land und Region (hier ist die Beschreibung leider etwas verwirrend). Wenn bei Land z.B. Frankreich gewählt ist, werden die Versandkosten im Standard dorthin berechnet.
    Als Beispiel: Firmensitz ist Frankreich, Logistik erfolgt aus Deutschland und die meisten Bestellungen kommen ebenfalls aus Deutschland. Dann sollte hier unbedingt Deutschland gewählt werden.
    Das Problem daran, nach Albanien kostet der Versand natürlich deutlich mehr. Das sieht man aber erst wenn man den Wohnort eingestellt hat bzw. angemeldet ist. Daher habe ich für Gäste einen Hinweis erstellt der das deutlich macht.
    Als erstes wird eine entsprechende Sprachdatei angelegt um für alle Shopsprachen einen Hinweis zu haben. Wir erstellen die Datei meincheckout.lang.php im Verzeichnis \lang\SPRACHE\user_sections und erstellen dort den Text. (Die gleiche Datei wird mit der jeweiligen Übersetzung in die anderen Sprachverzeichnisse gespeichert.)
    PHP:
    <?php

    $t_language_text_section_content_array 
    = array
    (
       
    'mgcheckout_dest' => 'Die Versandkosten werden für das jeweilige Bestimmungsland ermittelt. Sie können das Bestimmungsland per Klick auf das Flaggensymbol anpassen bzw. im Bestellvorgang auswählen.'
    );
    Um nun den Hinweis auch im Warenkorb zu sehen kopieren wir die shopping_cart.html und benennen Sie shopping_cart-USERMOD.html

    In der Datei wird als erstes die Sprachdatei verknüpft. Dazu einfach bei den load_language Befehlen noch die eigene Datei dazuhängen.
    HTML:
    {load_language_text section="meincheckout"}
    
    Ca. bei Zeile 36 existiert bereits ein Infofenster für andere Meldungen wie Mindestbestellwert und ähnliches:
    HTML:
    <div class="alert alert-info info-message col-xs-12 col-md-7 {if $info_message_1 == ''}hidden{/if}">
               {if $info_message_1 != ''}
                   {$info_message_1}{$min_order} {$info_message_2}{$order_amount}
               {/if}
               </div>
    
    direkt darunter habe ich den Hinweis als Ergänzung eingebaut:
    HTML:
               {if $CUSTOMER_STATUS === '1'}
               <div class="alert alert-info info-message col-xs-12 col-md-7">
               {$txt.mgcheckout_dest}
               </div>
               {/if}
    
    Zur Erklärung, das if CUSTOMER_STATUS prüft ob es sich um einen Gast handelt, sollte bei euch die ID für Gäste nicht 1 sein, dann entsprechend anpassen (ist bei den Kundengruppen zu sehen).
    Der DIV Tag sorgt für das passende aussehen.
    Das txt.mgcheckout_dest lädt den Text unserer Sprachvariable.

    Das Ergebniss sieht dann z.B. so aus:

    upload_2018-2-16_10-10-31.png


    Beste Grüße
    Maik
     
  2. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.546
    Danke erhalten:
    11.305
    Danke vergeben:
    1.612
    Und beim nächsten Update fängst Du wieder an, das einzubauen.
    Warum machst du das nicht gleich Updatesicher in einem Overload?
     
  3. maikguthauser

    maikguthauser Aktives Mitglied

    Registriert seit:
    9. Juli 2014
    Beiträge:
    39
    Danke erhalten:
    1
    Danke vergeben:
    11
    Weil die Overloads auch nicht wirklich Updatesicher sind. Ich hatte schon soviele Overloads die plötzlich nach einem Update nicht mehr gingen bzw. sogar Fehler verursacht hatten weil sich irgendwas geändert hat, dass ich lieber meine Funktionen sauber Dokumentiere und dann nach einem Update zur Not schnell wieder einbauen kann.