Cuando se utiliza Prestashop en multi-idioma, las direcciones o URLs se escriben como sigue:
http://www.boutique-prestashop.com/iso/fichier.php

Así se obtiene:
http://www.boutique-prestashop.com/fr/fichier.php para el francés.
http://www.boutique-prestashop.com/en/fichier.php de Inglés.
Y así sucesivamente.

Le aconsejamos que siga funcionando, pero si ya ha enumerado su tienda sin el / en / para la lengua francesa y no quiere perder su posición en los motores de búsqueda, le ofrecemos una solución para cambiar el comportamiento de los Prestashop.
Por lo tanto, tendrá un sistema para tratar los siguientes puntos:
http://www.boutique-prestashop.com/fichier.php para el francés.
http://www.boutique-prestashop.com/en/fichier.php de Inglés.

El cambio requiere que los cambios en los archivos del sistema en Prestashop. A ver si sabes lo que haces! Recuerde que debe guardar todos los archivos que edite antes.

Los siguientes cambios:
Link.php en la clase, busque el método denominado "getLangLink".
Inicialmente, el método termina con esto:

Idioma :: retorno getIsoById ((int) $ id_lang) '/'.;

Cambiar de esta manera:

if (:: Save getIsoById ((int) $ id_lang) == 'es')
return ";

Idioma :: retorno getIsoById ((int) $ id_lang) '/'.;

Este cambio tendrá como objetivo para cambiar todas las direcciones URL utilizadas por Prestashop, para eliminar la subcarpeta "en".

Frontcontroller.php en clase, busque el "init" método
A continuación, intente el siguiente código:

/ / Si es necesario y lengua cookie de idioma de inicio
if ($ = iso Herramientas :: getValue ('isolang') y confirme Título isLanguageIsoCode ($ iso) y ($ id_lang = (int) (Lengua :: getIdByIso ($ iso))))
$ _GET ['Id_lang'] = $ id_lang;

A continuación, sustituirlo por:

/ / Si es necesario y lengua cookie de idioma de inicio
if ($ = iso Herramientas :: getValue ('isolang') y confirme Título isLanguageIsoCode ($ iso) y ($ id_lang = (int) (Lengua :: getIdByIso ($ iso))))
$ _GET ['Id_lang'] = $ id_lang;
más
$ _GET ['Id_lang'] = (int) (Lengua :: getIdByIso ('es'));

Para cambiar el idioma, Prestashop utilizó el "es" el contenido de la URL. Debido a que habrá más, podemos explicar que si el idioma no se especifica en la url, entonces el idioma es el francés.

Cambios en su header.tpl archivo de plantilla. Logotipo de nivel, busque:

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

Y sustituir por:

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

El propósito de esta enmienda es simplemente para tener siempre la dirección correcta sobre la base de la lengua a la página de índice. De forma predeterminada, para Inglés, la dirección se http://www.boutique-prestashop.com/ lugar de http://www.boutique-prestashop.com/en/

En el archivo de módulos o gsitemap / gsitemap.php, la búsqueda

foreach ($ langs como $ lang)
$ This-> _addSitemapNode ($ xml, Herramientas :: getShopDomain (true, true) __ PS_BASE_URI__ $ lang ['iso_code'] '/', '1 .00 ',' Diario ', date (' Ymd ')...);

Y sustituir por:

foreach ($ langs como $ lang)
if ($ lang ['iso_code'] == 'es')
$ This-> _addSitemapNode ($ xml, Herramientas :: getShopDomain (true, true) __ PS_BASE_URI__, '1 .00 ',' Diario ', date (' Ymd ').);
más
$ This-> _addSitemapNode ($ xml, Herramientas :: getShopDomain (true, true) __ PS_BASE_URI__ $ lang ['iso_code'] '/', '1 .00 ',' Diario ', date (' Ymd ')...);

El módulo de mapa, escribe todas las direcciones URL debe seguir la norma ISO en el principio del archivo generado. El objetivo es eliminar la dirección URL con la subcarpeta "es" puesto que ya no existen.

Por último, abra la Tools.php clase, encontrar el método de generateHtaccess.
Buscar en el siguiente código:

foreach (Meta :: getMetasByIdLang ($ language ['id_lang']) as $ key => $ meta)
if (empty ($ meta ['url_rewrite']) y confirme :: isLinkRewrite ($ meta ['url_rewrite']))
$ Array ['RewriteRule'] ['contenido'] ['^'. $ Idioma ['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'] ['contenido'] ['^'. $ Idioma ['iso_code']. '/'. $ Default_meta [$ key] ['url_rewrite']. '$'] = $ Default_meta [$ clave] ['page']. '. php? isolang ='. $ language ['iso_code']. ' [QSA, L] ';
$ Array ['RewriteRule'] ['contenido'] ['^'. $ Idioma ['iso_code']. '/ ([^? &] *)'] = $ 1? Isolang = '. $ Idioma [' iso_code '].' [QSA, L] ';

Y sustituir por:

if ($ idioma ['iso_code'] == 'es') {
foreach (Meta :: getMetasByIdLang ($ language ['id_lang']) as $ key => $ meta)
if (empty ($ meta ['url_rewrite']) y confirme :: isLinkRewrite ($ meta ['url_rewrite']))
$ Array ['RewriteRule'] ['contenido'] ['^'. $ Meta ['url_rewrite']. '$'] = $ Meta ['page']. '. Php? Isolang ='. $ Idioma [' '].' iso_code [QSA, L] ';
elseif (array_key_exists ($ key, $ default_meta) && $ default_meta [$ key] ['url_rewrite']! = ")
$ Array ['RewriteRule'] ['contenido'] ['^'. 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']) y confirme :: isLinkRewrite ($ meta ['url_rewrite']))
$ Array ['RewriteRule'] ['contenido'] ['^'. $ Idioma ['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'] ['contenido'] ['^'. $ Idioma ['iso_code']. '/'. $ Default_meta [$ key] ['url_rewrite']. '$'] = $ Default_meta [$ clave] ['page']. '. php? isolang ='. $ language ['iso_code']. ' [QSA, L] ';
$ Array ['RewriteRule'] ['contenido'] ['^'. $ Idioma ['iso_code']. '/ ([^? &] *)'] = $ 1? Isolang = '. $ Idioma [' iso_code '].' [QSA, L] ';
}

Palabras clave:

, , , , ,

9 comentarios ¿por qué no dejar el suyo?

No vamos a comentar para el apoyo de un problema técnico con uno de nuestros módulos. Gracias en contacto con nosotros directamente con nuestro formulario de contacto !

Hola,

Tutorial perfecto gracias, pero mi vínculos ES (sólo) para las hojas de datos me redirecciona a un 404.
La versión ES está bien
Ckarone

ckarone 30 de marzo 2012 a las 10 h 35 min

Hola,

Acabo de comprar a través de + reescritura de direcciones URL se añade, sin saber que eran los desarrolladores.

Mi pregunta es: ¿- que es útil antes de instalar o configurar + reescritura de direcciones URL, para hacer una mani en la función propuesta por defecto en 1.4.

En mi instalación local en el Wamp, tuve un error debido a la activación de la función integrada, o por htaccess, no he logrado reparar y tuve que reinstalar todo.

El sitio se encuentra ahora en el servidor, pero yo prefiero pedirle que tome precauciones.

Gracias de antemano por su respuesta, tengo que esperar antes de instalar + reescritura de direcciones URL.

Cordialmente.

Jeff 02 de febrero 2012 a las 17 h 30 min

hola, he tratado de aplicar este método, pero recibo el siguiente mensaje de error:
Parse error: error de sintaxis, inesperado '$', esperando ']' en / var / www / vhosts / monsite.com / httpdocs / classes / Tools.php en la línea 1730.
¿cómo puedo remediar esta
muchas gracias

Oliva 27 de noviembre 2011 a las 14 h 28 min

Gracias por este artículo muy útil, bien escrito, justo y preciso!
Buen trabajo.
Gracias de nuevo

beemol 10 de noviembre 2011 a las 9 horas 07 min

Decir que el artículo está destinado a ayudar a que el usuario lo establecido en el código que indica dónde encontrar y cómo cambiarlo.

Si utilizamos los valores de reemplazo, esto no ayuda a entender realmente lo que parte del código se hace referencia (o tendría que realmente detalles de cada paso).

En resumen, este es sin duda la mejor práctica de utilizar ;-)

Magavenue 27 de junio 2011 a 5 h 04 min

Escribir un comentario