2013-06-12 9 views
6

Attualmente sto configurando un negozio Magento che supporterà alcune lingue diverse.Diverse chiavi URL per diverse lingue Pagine CMS

Un problema che mi sono imbattuto in è che non riesco a trovare il modo di collegare due pagine CMS insieme, in modo che quando un utente passa la loro lingua, vengono inoltrati automaticamente alla pagina CMS corrente, ma nella loro lingua preferita. Un'opzione consisterebbe nell'usare la stessa chiave URL per entrambe le pagine, ma ciò non sarebbe molto facile da usare dato che alcuni utenti vedrebbero le chiavi URL non nella loro lingua nativa.

Lasciate che vi faccia un esempio:

Ho una pagina "Chi siamo". Nella versione inglese del negozio, l'URL di quella pagina è /about-us. Ora un utente tedesco atterra su quella pagina e cambia la sua lingua. Ma poiché l'equivalente tedesco di "Chi siamo" è "Über uns", la versione tedesca di tale pagina è , pertanto all'utente verrà presentata una pagina 404 perché non esiste una versione tedesca di /about-us.

Qualcuno sa come risolvere questo problema?

Aggiornamento: ha effettuato ulteriori ricerche e non ha trovato nulla. Non posso credere di essere l'unico con questo problema? La soluzione ideale, utilizzando la stessa chiave URL per tutte le lingue, sembra molto brutta e non molto intuitiva!

risposta

8

Quindi, l'unica soluzione che ho trovato è stata creare manualmente un reindirizzamento per ogni pagina nelle Regole di riscrittura Magento . Non farlo, andare a Catalog -> URL Rewrite Management e aggiungere ogni pagina nel seguente formato:

enter image description here

Quindi, se un utente sta utilizzando il Francais vista negozio e richiede /url-in-english, il reindirizzamento entreranno in gioco e reindirizzare l'utente a /url-in-french.

Ovviamente questa non è una soluzione ideale, sarebbe preferibile se due pagine potessero essere "collegate" direttamente, ma suppongo che dovrò usare questo per il momento. Se qualcuno ha trovato una soluzione migliore, sentiti libero di aggiungere il tuo!

1

La soluzione di sopra funziona ma richiede un po '. Abbiamo appena fatto la seguente per riscrivere l'url lingua cambia quando su un cms per andare alla URL di base:

Aggiungere il seguente codice al app/design/frontend/default/template_name/template/page/switch/languages.html dopo la parte in cui si riempie la variabile $ url (il nostro era come

$url = /*explode('?',*/$_lang->getCurrentUrl()/*);*/; 

così abbiamo aggiunto il seguente:

if(($this->getRequest()->getModuleName() == 'cms') && strpos($url,'.com/')){$url = strstr($url, '.com/', true) . '.com/';} 
elseif(($this->getRequest()->getModuleName() == 'cms') && strpos($url,'.de/')){$url = strstr($url, '.de/', true) . '.de/';} 
elseif(($this->getRequest()->getModuleName() == 'cms') && strpos($url,'.nl/')){$url = strstr($url, '.nl/', true) . '.nl/';} 

Quello che ho fatto qui è controllare se su una pagina CMS e verificare se l'URL contiene sia .com /; .de/o .nl e la striscia parte prima di aggiungere nuovamente l'estensione del dominio.

nel nostro esempio: http://www.mega-watch.com/about-us?blabla diventerà http://www.mega-watch.com/

Spero che questo aiuti qualcuno fuori ..

+0

Impressionante, grazie per aver condiviso. Sembra più elegante della mia soluzione ... –

2

Ho visto questo bug in Magento CE 1.8.0.0. Il problema qui era un compito sbagliato in \ app \ code \ core \ Mage \ Core \ Model \ Url \ Rewrite \ Request.php.

Per risolvere questo problema è sufficiente modificare l'assegnazione di $ fromStore nella funzione protetta _rewriteDb() all'interno della classe Mage_Core_Model_Url_Rewrite_Request da

$fromStore = $this->_request->getQuery('___from_store'); 

a

$fromStore = Mage::getModel('core/store')->load($this->_request->getQuery('___from_store'), 'code')->getId(); 

con il risultato che abbiamo può accedere alla matrice $ memorizza con la chiave giusta (con l'id del negozio invece del codice del negozio). Con questo la dichiarazione if

if (!empty($stores[$fromStore])) { 

funziona nel modo giusto.

Come promemoria: non modificare i file di base. Basta copiare \ app \ code \ core \ Mage \ Core \ Model \ Url \ Rewrite \ Request.php in \ app \ code \ local \ Mage \ Core \ Model \ Url \ Rewrite \ Request.php prima di qualsiasi modifica. Questa risposta è disponibile in tedesco qui: Rewrite von Seiten in verschiedenen Sprachen und verschiedenen URL Keys in Magento