PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ANLEITUNG: Neues Versandmodul auf Basis vorhandener Module erstellen



KlausK
17.08.2021, 19:14
Weil für einen meiner Shops die Versandkosten für einige EU-Länder exorbitant gestiegen sind, habe ich dafür 3 weitere Module (Pauschale Versandkosten) erstellt.
Damit lässt sich die EU in mehrere Zonen einteilen für die ich dann z.B. 39 Euro (BE,NL,LU,AT,CH = Zone 1), 59 Euro (DK,HU,CZ,FR = Zone 2) , 79 Euro (GB,GR,IT,SE = Zone 3), usw. definieren kann.

Prinzipiell lassen sich mit dieser Methode alle Versandmodule duplizieren, was jedoch in den allermeisten Fällen keinen Sinn macht.

Anleitung am Beispiel der bereits vorhandenen flat.php
Funktioniert ab Version GX 4.1.1.x

Pflicht-Werkzeuge (alle sind Open Source und Multilingual):
Filezilla (https://filezilla-project.org/) oder WinSCP (https://winscp.net/eng/download.php)
NP++ (Notepad++) (https://notepad-plus-plus.org/)


1. Versandmodul als Vorlage kopieren und anpassen

/includes/modules/shipping/flat.php
kopieren nach

/includes/modules/shipping/flat2.php


flat2.php mit dem Texteditor NP++ öffnen

class flat_ORIGIN
ersetzen durch

$languageTextManager = MainFactory::create_object('LanguageTextManager', array(), true);
$languageTextManager->init_from_lang_file('flat');

class flat_ORIGIN

STRG+H drücken und flat durch flat2 ersetzen [Alle Ersetzen], Groß-/Kleinschreibung beachten
Anschließend FLAT durch FLAT2 ersetzen [Alle Ersetzen], Groß-/Kleinschreibung beachten
** Anmerkung unten beachten!


2. Deutsche Sprachdatei als Vorlage kopieren und anpassen

/lang/german/original_sections/modules/shipping/flat.lang.inc.php
kopieren nach

/lang/german/user_sections/modules/shipping/flat2.lang.inc.php


flat2.lang.inc.php mit dem Texteditor NP++ öffnen
STRG+H drücken und FLAT durch FLAT2 ersetzen [Alle Ersetzen], Groß-/Kleinschreibung beachten


Anschließend sollten die Variablen für den Modul-Titel und -Beschreibung angepasst werden

'MODULE_SHIPPING_FLAT2_TEXT_DESCRIPTION' => 'Pauschale Versandkosten',
'MODULE_SHIPPING_FLAT2_TEXT_TITLE' => 'Pauschale Versandkosten',
ändern zu

'MODULE_SHIPPING_FLAT2_TEXT_DESCRIPTION' => 'Pauschale Versandkosten für Zone 2',
'MODULE_SHIPPING_FLAT2_TEXT_TITLE' => 'Pauschale Versandkosten Zone 2',


3. Englische Sprachdatei als Vorlage kopieren und anpassen

/lang/english/original_sections/modules/shipping/flat.lang.inc.php
kopieren nach

/lang/english/user_sections/modules/shipping/flat2.lang.inc.php


flat2.lang.inc.php mit dem Texteditor NP++ öffnen
STRG+H drücken und FLAT durch FLAT2 ersetzen [Alle Ersetzen], Groß-/Kleinschreibung beachten


Anschließend sollten die Variablen für den Modul-Titel und -Beschreibung angepasst werden

'MODULE_SHIPPING_FLAT2_TEXT_TITLE' => 'Flat Rate',
'MODULE_SHIPPING_FLAT2_TEXT_DESCRIPTION' => 'Flat rate',
ändern zu

'MODULE_SHIPPING_FLAT2_TEXT_TITLE' => 'Flat Rate Zone 2',
'MODULE_SHIPPING_FLAT2_TEXT_DESCRIPTION' => 'Flat rate for Zone 2',


4. Zum Schluss Caches leeren

Cache für Texte leeren
Cache für Modulinformationen leeren
Cache für Seitenausgabe leeren



5. Vorsicht beim Modul table.php **
Beim Modul table.php darf man nicht einfach alle Begriffe table mit z.B. table2 ersetzen.
Weil der Begriff table auch in der Programmstruktur verwendet wird, z.B. zur Abfrage der Datenbanktabellen, darf dieser Begriff natürlich nicht geändert werden.


Ein Beispiel aus der table.php[/B

$table_cost = preg_split('/[:,]/', MODULE_SHIPPING_TABLE_COST);
$size = sizeof($table_cost);
for ($i = 0, $n = $size; $i < $n; $i += 2) {
if ($order_total <= $table_cost[$i]) {
$shipping = $table_cost[$i + 1];
break;
}
}
Hier darf nur die Variable [B]MODULE_SHIPPING_TABLE_COST z.B. in MODULE_SHIPPING_TABLE2_COST geändert werden
$table_cost darf nicht geändert werden.