Ich möchte einen Texteintrag umbenennen, wie geht das updatesicher beim randshop?

Screenshopt:  Aus Angebote soll meine Empfehlungen werden
Aus Angebote soll meine Empfehlungen werden

Auf der Startseite soll statt Angebote der Text meine Empfehlungen erscheinen.

Der Namen der Variablen, in diesem Fall $n_angebote, wurde im Template /website/startseite/index.php auch schon gefunden.
Ich habe auch Tipps zum Bearbeiten von randshop templates bereitgestellt.

Das Anzeigen des neuen Texts lässt sich dadurch erreichen, dass man im Verzeichnis /includes/language/die Datei langu_de.inc.php bearbeitet. Hier sucht man den Eintrag $n_angebote = "Angebote"; und ersetzt das Wort Angebote durch meine Empfehlung.

Allerdings ist beim nächsten Update der randshop-Software dieser Eintrag wieder zurückgesetzt. Grund ist, dass mit dem Update die Sprachdatei mitgeliefert wird und diese die bestehende Sprachdatei ersetzt. Ist auch sinnvoll, schließlich könnten neue Einträge hinzugekommen sein und diese werden natürlich auch benötigt.

Hat man seine Änderungen dokumentiert, kann man sie jetzt natürlich wieder neu eintragen. Hat man sie nicht dokumentiert, ist das Einfügen der schon einmal durchgeführten Anpassungen mit entsprechendem Aufwand verbunden.

Viel eleganter wäre es, wenn die einmal durchgeführten Änderungen der Texte erhalten blieben. Einen Ansatz, mit dem das möglich ist, beschreibe ich hier.

Ziel:

Es soll eine Sprachdatei erstellt werden, die geänderte Einträge aufnimmt und für das jeweilige Shop-Template verfügbar macht.

Lösung:

Schritt 1 : Eigene Textdatei anlegen

Um die eigenen Texte zu speichern habe ich mir unter /templates/meinTemplateName/  ein neues Verzeichnis mit dem Namen  /tpl_includes angelegt. Darin das Verzeichnis /language und darin die Datei langu.inc.php. In dieser Datei speichere ich nun meine Textänderungen. Für das Beispiel von oben schreibe ich also den Eintrag $n_angebote = "Meine Epmpfehlungen"; in die zweite Zeile dieser Datei. Damit der Webserver diesen Eintrag auch als PHP auswertet, muss in der ersten Zeile <?php stehen.

Die Datei /templates/meinTemplateName/tpl_includes/langu_de.inc.php bekommt also den folgenden Inhalt:

<?php
$n_angebote = "Meine Epmpfehlungen";

Sollten weitere Änderungen notwendig sein, so können diese hier in jeweils neuen Zeilen angefügt werden. (das <?php ist nur einmal am Anfang der Datei notwendig)

Unbedingt wichtig ist, dass der abschließende Semikolon (Strichpunkt) am Ende jeder Zeile vorhanden ist. Fehlt dieser, kann PHP die Datei nicht mehr korrekt interpretieren und es kommt zu weißen Seiten im Shop. Oder, bei eingeschalteter Fehleranzeige, eben zur Anzeige der Fehlermeldungen. Allerdings ist die Suche nach solch fehlenden Semikolons nicht immer einfach.
Also "never forget the semicolon".

Schritt2: Die neue Sprachdatei ins Template einbinden

Damit Einträge aus der neu erstellten Sprachdatei auch im Shop angezeigt werden, muss sie noch in das Template eingebunden werden. Dazu müssen die folgenden drei Dateien bearbeitet werden:

  • /templates/meinTemplateName/webseite/index.php (für die allgemeinen Shopseiten)
  • /templates/meinTemplateName/webseite/checkout_index.php (für die Seiten, die den Bestellvorgang behandeln)
  • /templates/meinTemplateName/webseite/cms_index.php (für die Seiten, die unter CMS angelegt wurden)

Die drei Dateien bekommen jeweils ganz am Anfang den folgenden Code:

(mit <?php als erste Zeile und ?> als letzte Zeile)

<?php
  //zusätzliche Sprachdatei einbinden
  if (file_exists(DATEIPFAD . 'templates/' . $rowTemp->name .'/tpl_includes/language/langu_' . $_SESSION["languageisocode"] . '.inc.php')) {
    include_once(DATEIPFAD .'templates/' . $rowTemp->name . '/tpl_includes/language/langu_' . $_SESSION["languageisocode"] . '.inc.php');
  }
?>

Nach diesem Code kommt direkt, also ohne weitere Leerzeile, der unveränderte html-Code des Templates.

Damit wird unsere neue erstellte Sprachdatei in das Template eingebunden. Die Einträge darin überschreiben nun die Einträge der original randshop-Sprachdatei (die vorher eingebunden ist) und erscheinen deshalb wirklich auch im Shop.

Da unsere neue Sprachdatei in der randshop-Software nicht bekannt ist, kann sie bei einem Update auch nicht überschrieben werden.

Einzig wenn das Template aktualisiert wird, müssen die Einträge zum Einbinden der neuen Sprachdatei in den index-Dateien wieder eingefügt werden. Dies lässt sich dadurch verhindern, dass das Standardtemplate kopiert und unter einem eigenen Namen gespeichert wird. Dann wird dieses Template für den Shop verwendet. Damit wird bei einem Update zwar das Standardtemplate überschrieben, die Änderungen im eigenen Template bleiben jedoch erhalten.

Übrigens lassen sich jetzt sogar komplett neue Variablen anlegen und im Template verwenden. Also einfach eine neue Zeile mit der Variablen anlegen. Also etwa so:

<?php
$n_angebote = "Meine Epmpfehlungen";
$neueTextausgabe = "Meine erste eigene Sprachvariable";

Und dann im Template wieder ausgeben. Könnte dann so aussehen:

<?php echo $neueTextausgabe ?>

Dann erscheint an dieser Stelle der neu vorgegebene Text. Ist doch eine feine Sache, oder?

Feedback oder Anregungen?

Wie immer, interessiert mich natürlich, ob diese Anleitung verständlich und hilfreich ist.

Schreiben Sie mir einfach im Kommentar, wenn noch nicht alle Fragen beantwortet wurden.

Übrigens erhalten Sie, wenn Sie die Adresse Ihrer Webseite angeben, einen Link zu Ihrer Webseite. Ist vielleicht für SEO ganz interessant ;-)

Vielen Dank!

Kommentar abgeben:

Kommentare:

Kommentar von Michael |

Hi Magnus,
hab das jetzt auch mal getestet. Es hat leider nicht auf Anhieb geklappt. Bin aber dann draufgekommen was falsch war bzw. fehlte. Die Datei muß noch mit dem Länderkürzel ergänzt werden. Also für Deutschland "langu_de.inc.php".
Aber ich muß sagen eine tolle Idee. Und Du hast recht, dass Anpassungen des Templates auch im Ordner des Templates sein sollen.

Schöne Grüße
manuengel

Antwort von Magnus Geisler

Hi Michael,

vielen Dank für den Hinweis, habs oben gleich korrigiert.

viele Grüße

Magnus