Wenn Sie Prestashop in mehreren Sprachen, werden Adressen / URLs wie folgt geschrieben:
http://www.boutique-prestashop.com/iso/fichier.php
Also das gibt:
http://www.boutique-prestashop.com/fr/fichier.php für Französisch.
http://www.boutique-prestashop.com/en/fichier.php für Englisch.
Und so weiter.
Wir beraten Sie, damit es läuft, aber wenn Sie bereits Ihren Shop ohne das / de / für Französisch aufgeführt haben und Sie nicht möchten, um Ihre Position in den Suchmaschinen zu verlieren, bieten wir eine Lösung, um das Verhalten zu ändern Prestashop.
Sie haben daher ein System mit folgenden Punkten befassen:
http://www.boutique-prestashop.com/fichier.php für Französisch.
http://www.boutique-prestashop.com/en/fichier.php für Englisch.
Der Wandel erfordert Änderungen in Systemdateien in Prestashop. A nur tun, wenn Sie wissen, was Sie tun! Denken Sie daran, dass alle Dateien, bevor Sie bearbeiten und speichern.
Die folgenden Änderungen:
Link.php in der Klasse, für die Methode mit dem Namen "getLangLink"-Look.
Zunächst endet das Verfahren mit diesem:
Ändern Sie wie folgt aus:
zurückzukehren ";
Sprache :: getIsoById return ((int) $ id_lang) '/'.;
Diese Änderung zielt darauf ab, alle URLs by PrestaShop zu ändern, um den Unterordner "en" löschen.
Frontcontroller.php in der Klasse, für die "init"-Methode aussehen
Dann versuchen Sie den folgenden Code:
if ($ iso = Tools :: getValue ('isolang') und Validate :: isLanguageIsoCode ($ ISO) und ($ id_lang = (int) (Sprache :: getIdByIso ($ iso))))
$ _GET ['Id_lang'] = $ id_lang;
Dann ersetzen Sie es mit:
if ($ iso = Tools :: getValue ('isolang') und Validate :: isLanguageIsoCode ($ ISO) und ($ id_lang = (int) (Sprache :: getIdByIso ($ iso))))
$ _GET ['Id_lang'] = $ id_lang;
sonst
$ _GET ['Id_lang'] = (int) (Sprache :: getIdByIso ('en'));
Um Sprache zu ändern, verwendet Prestashop die "en"-Gehalt in der URL. Da es mehr sein wird, erklären wir, dass, wenn die Sprache nicht in der URL angegeben, dann wird die Sprache Französisch ist.
Ändern Sie in Ihrem Template-Datei header.tpl. Logo Ebene suchen:
Und durch ersetzen:
Der Zweck dieser Änderung ist es einfach, immer die richtige Adresse auf der Sprache, um die Index-Seite basiert. In der Standardeinstellung für Englisch, wird die Adresse http://www.boutique-prestashop.com/ statt http://www.boutique-prestashop.com/en/
In der Datei modules / gsitemap / gsitemap.php, auf der Suche
$ This-> _addSitemapNode ($ xml, Werkzeuge :: getShopDomain (true, true) __ PS_BASE_URI__ $ lang ['iso_code'] '/', '1 .00 ',' Täglich ', date (' Ymd ')...);
Und durch ersetzen:
if ($ lang ['iso_code'] == 'en')
$ This-> _addSitemapNode ($ xml, Werkzeuge :: getShopDomain (true, true) __ PS_BASE_URI__, '1 .00 ',' Täglich ', date (' Ymd ').);
sonst
$ This-> _addSitemapNode ($ xml, Werkzeuge :: getShopDomain (true, true) __ PS_BASE_URI__ $ lang ['iso_code'] '/', '1 .00 ',' Täglich ', date (' Ymd ')...);
Der Sitemap-Modul schreibt alle URLs durch die ISO am Anfang der generierten Datei befolgt werden. Ziel ist es, die URL mit dem Unterordner "en" löschen, da sie nicht mehr existieren.
Schließlich öffnen Sie die Klasse tools.php, finden Sie die Methode generateHtaccess.
Suchen Sie den folgenden Code:
if (empty ($ meta ['url_rewrite']) und Validate :: isLinkRewrite ($ meta ['url_rewrite']))
$ Array ['RewriteRule'] ['Inhalt'] ['^'. $ Sprache ['iso_code']. '/'. $ Meta ['url_rewrite']. '$'] = $ Meta ['page']. '. php? isolang ='. $ language ['iso_code']. ' [QSA, L] ';
elseif (array_key_exists ($ key, $ default_meta) && $ default_meta [$ key] ['url_rewrite']! = ")
$ Array ['RewriteRule'] ['Inhalt'] ['^'. $ Sprache ['iso_code']. '/'. $ Default_meta [$ key] ['url_rewrite']. '$'] = $ Default_meta [$ key] ['page']. '. php? isolang ='. $ language ['iso_code']. ' [QSA, L] ';
$ Array ['RewriteRule'] ['Inhalt'] ['^'. $ Sprache ['iso_code']. '/ ([^? &] *)'] = $ 1? Isolang = '. $ Sprache [' iso_code '].' [QSA, L] ';
Und durch ersetzen:
foreach (Meta :: getMetasByIdLang ($ language ['id_lang']) as $ key => $ meta)
if (empty ($ meta ['url_rewrite']) und Validate :: isLinkRewrite ($ meta ['url_rewrite']))
$ Array ['RewriteRule'] ['Inhalt'] ['^'. $ Meta ['url_rewrite']. '$'] = $ Meta ['page']. '. PHP? Isolang ='. $ Sprache [' iso_code '].' [QSA, L] ';
elseif (array_key_exists ($ key, $ default_meta) && $ default_meta [$ key] ['url_rewrite']! = ")
$ Array ['RewriteRule'] ['Inhalt'] ['^'. Default_meta $ [$ key] ['url_rewrite']. '$'] = $ Default_meta [$ key] ['page']. '. PHP? isolang = '. $ language [' iso_code '].' [QSA, L] ';
Else {}
foreach (Meta :: getMetasByIdLang ($ language ['id_lang']) as $ key => $ meta)
if (empty ($ meta ['url_rewrite']) und Validate :: isLinkRewrite ($ meta ['url_rewrite']))
$ Array ['RewriteRule'] ['Inhalt'] ['^'. $ Sprache ['iso_code']. '/'. $ Meta ['url_rewrite']. '$'] = $ Meta ['page']. '. php? isolang ='. $ language ['iso_code']. ' [QSA, L] ';
elseif (array_key_exists ($ key, $ default_meta) && $ default_meta [$ key] ['url_rewrite']! = ")
$ Array ['RewriteRule'] ['Inhalt'] ['^'. $ Sprache ['iso_code']. '/'. $ Default_meta [$ key] ['url_rewrite']. '$'] = $ Default_meta [$ key] ['page']. '. php? isolang ='. $ language ['iso_code']. ' [QSA, L] ';
$ Array ['RewriteRule'] ['Inhalt'] ['^'. $ Sprache ['iso_code']. '/ ([^? &] *)'] = $ 1? Isolang = '. $ Sprache [' iso_code '].' [QSA, L] ';
}













Hallo,
Perfekte Anleitung Vielen Dank, aber meine Links DE (nur) zu den Datenblättern leitet mich zu einem 404.
Die EN-Fassung ist OK
Ckarone
Hallo,
Ich kaufte via URL Rewriting + fügt sie, ohne zu wissen, dass Sie die Entwickler waren.
Meine Frage ist: ist - es hilfreich, vor dem Installieren oder Konfigurieren von URL-Rewriting +, um eine manip in der vorgeschlagenen Funktion standardmäßig in 1.4 zu machen.
Auf meiner lokalen Installation auf WAMP, hatte ich einen Fehler aufgrund der Aktivierung der integrierten Funktion oder wegen der htaccess, ich habe es nicht geschafft, zu reparieren und ich musste alles neu zu installieren.
Die Seite ist jetzt auf dem Server, aber ich möchte lieber bitten, Vorkehrungen zu treffen.
Vielen Dank im Voraus für Ihre Antwort, ich warte vor der Installation von URL-Rewriting +.
Herzlich.
Hallo, habe ich versucht, diese Methode anzuwenden, aber ich erhalte folgende Fehlermeldung:
Parse error: syntax error, unexpected '$', erwartet ']' in / var / www / vhosts / monsite.com / httpdocs / classes / tools.php on line 1730.
wie kann ich dies beheben
danke
Vielen Dank für diese sehr hilfreichen Artikel, gut geschrieben, fair und korrekt!
Nice work.
Nochmals vielen Dank
Sprich, dass der Artikel soll dem Benutzer helfen, richtete ihn auf in den Code sagen, wo sie zu finden und wie Sie es ändern.
Wenn wir die Überschreibungen verwenden, bedeutet dies nicht wirklich helfen zu verstehen, was Teil des Codes verwiesen wurde (oder es wäre wirklich detailliert jeden Schritt haben).
Kurz gesagt, ist dies in der Tat die beste Praxis zu nutzen