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:

Sprache :: getIsoById return ((int) $ id_lang) '/'.;

Ändern Sie wie folgt aus:

if (:: Save getIsoById ((int) $ id_lang) == 'en')
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:

/ / Bei Bedarf langue und Sprache init Cookie
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:

/ / Bei Bedarf langue und Sprache init Cookie
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:

<a title="{$shop_name|escape:'htmlall':'UTF-8'}" href="{$base_dir}">

Und durch ersetzen:

<a href="{$link-> getPageLink ('index.php')} "title =" {$ shop_name | escape: "htmlall ':' UTF-8 '}">

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

foreach ($ langs als $ lang)
$ This-> _addSitemapNode ($ xml, Werkzeuge :: getShopDomain (true, true) __ PS_BASE_URI__ $ lang ['iso_code'] '/', '1 .00 ',' Täglich ', date (' Ymd ')...);

Und durch ersetzen:

foreach ($ langs als $ lang)
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:

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] ';

Und durch ersetzen:

if ($ Sprache ['iso_code'] == 'en') {
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] ';
}

Schlüsselwörter:

, , , , ,

9 Kommentare, warum nicht verlassen, deine?

Wir werden nicht für die Unterstützung Kommentar durch ein technisches Problem mit einem unserer Module. Vielen Dank kontaktieren Sie uns direkt mit unserem Kontaktformular !

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

ckarone 30. März 2012 um 10 h 35 min

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.

Jeff 2. Februar 2012 um 17 h 30 min

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

Olive 27. November 2011 um 14 h 28 min

Vielen Dank für diese sehr hilfreichen Artikel, gut geschrieben, fair und korrekt!
Nice work.
Nochmals vielen Dank

beemol 10. November 2011 um 9 Uhr 07 Min.

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 ;-)

Magavenue 27. Juni 2011 bis 5 h 04 min

Kommentar schreiben