MODx - multi lingua SEO friendly

Nel precedente articolo ho illustrato come configurare un sito multi lingua in MODx e come effettuare il cambio lingua su tale sito.

Oggi propongo una soluzione multi lingua SEO friendly utilizzando la tecnica delle cartelle di lingua virtuali ovvero creando una struttura simile a:

"http://miosito.it/it/pagina.html"
"http://miosito.it/en/pagina.html"

dove it e en non sono effettive cartelle nel file system bensì dei parametri intercettati ed utilizzati da MODx per attivare il contesto di lingua più adatto.

Ti senti pronto?

NOTA: la lettura e comprensione dell’articolo “MODx – multi lingua & sessione” è fondamentale per poter comprendere i passaggi esposti in questo tutorial!

MODx – SEO Friendly URL

Il primo step consiste nell’abilitare le SEO friendly url nel CMS. Tale impostazione converte gli url parametrici standard in indirizzi virtuali senza parametri che sono la condizione necessaria per un sito completamente indicizzabile dai motori di ricerca!

Come si fa:

  • dal menu Sistema -> Configurazione Sistema applica il filtro “URL Semplici (Friendly URL)” se modifica il valore della chiave “friendly_urls”.
  • dal Pannello Risorse spostati sulla tab Files e rinomina il file ht.access in .htaccess (lo puoi fare anche via FTP)

NOTA: la soluzione proposta in questo articolo NON richiede modifiche al file .htaccess se non per l’impostazione della opzione RewriteBase la quale dipende dalla posizione di installazione e configurazione del server!

MODx – base_url

Ora è necessario che tutti i link verso le risorse appartenenti ad un contesto di lingua puntino all’interno di una cartella virtuale legata alla lingua rappresentata dal contesto stesso.

Tutte le risorse del contesto “en” dovranno puntare su indirizzi simili a “/en/risorsa.html”.

Per fare questo possiamo aggiungere la chiave “site_url al contesto di lingua.
site_url” viene utilizzata da MODx per costruire gli indirizzi delle risorse.

Come si fa:

  • apri la schermata di modifica del contesto cliccando sul titolo del contesto dal Pannello Risorse sulla sinistra del manager
  • spostati sulla tab “Settaggi Contesto”
  • crea la nuova chiave di configurazione con il valore “{site_url}en/” (“en” è la cartella per l’inglese…)
  • salva

MODx – Gateway Plugin

Ora viene il punto più complesso ovvero la creazione di un plugin che consenta a MODx di:

  • estrapolare la cartella virtuale di lingua dall’url
  • interpretare tale parametro e caricare il contesto di lingua

NOTA: in molti tutorial che ho letto si propongo soluzioni piuttosto complesse basate su una combinazione di plugin + modifica .htaccess; in questo articolo propongo una soluzione più semplice in quanto tutta la logica è contenuta nel sorgente del plugin ed è sufficiente un copia/incolla del codice proposto per implementarla nel proprio sito web.

<?php
/**
* Plugin Cambio Lingua con Sessione
*/
if ( $modx->context->get('key') != "mgr" ) {
  if ( isset($_GET['q']) ) {
    if ( substr(strrev($_GET['q']),0,1) !== '/' && strpos($_GET['q'],'.') === false ) $_GET['q'].= '/';
    if ( strpos($_GET['q'],'/') ) {
      $_GET['cultureKey'] = substr($_GET['q'],0,strpos($_GET['q'],'/'));
      $_GET['q'] = $_REQUEST['q'] = substr( $_GET['q'], strlen($_GET['cultureKey'])+1, 600 );
    }
  }
  if ( isset($_GET['cultureKey']) ) {
    $modx->switchContext($_GET['cultureKey']);
    $_SERVER['REQUEST_URI'] = str_replace(array($_GET['cultureKey'],'//'),array('','/'),$_SERVER['REQUEST_URI']);
  }
}

Come si fa:

Copia il codice proposto in questo paragrafo e sostituiscilo al sorgente del plugin creato nel precedente articolo.

Risorsa Statica:

Il sorgente di tale plugin è disponibile per il download, il fork, o il PR su GitHub:

https://github.com/movableapp/MODx-Utils/blob/master/plugins/seo-multilanguage-context-switcher.php

Puoi copiare da lì la versione più aggiornata del codice di questa risorsa oppure integrarla come risorsa statica nella tua installazione MODx.

Credits DT Author Box

Scritto da MPeg

MPeg

Progetto e sviluppo applicazioni web basate su CakePHP e jQuery. Fornisco consulenza e formazione su PHP, Javascript, HTML5, CSS, CakePHP, jQuery, jQueryUI, BackboneJS, LESS. Inoltre scrivo articoli e seminari riguardanti l’usabilità delle interfacce web, ottimizzazione del codice e delle prestazioni di pagine ed applicazinoni web. Oltre al web le mie grandi passioni sono l’escursionismo in montagna, la mountain bike, la V-Strom ed in generale quasi qualunque sport che non faccia successo in TV!

Sito web dell’Autore

Posted in Software, Tutorial and tagged , , , , , , . Bookmark the permalink. RSS feed for this post. Leave a trackback.
  • http://www.facebook.com/luca.schibuola Luca Schibuola

    Ciao Marco, ti ringrazio per questa serie di articoli approfonditi e interessanti che hai pubblicato su modx. Cercavo proprio qualcosa del genere, e mi sembrava promettere bene questo CMS. Dalla tua disamina vedo invece emergere un sistema (almeno per quello che riguarda per esempio la gestione dei menù – pazzesco che serva un plugin – e le diverse versioni linguistiche) quantomeno farraginoso e poco rigoroso. Sono disposto a sottostare a una certa curva di apprendimento, ma in cambio di un sistema lineare e logico. Sono deluso, tu pensi che lo utilizzerai in casi reali?

  • http://twitter.com/thepeg Marco Pegoraro

    Ciao Luca, anche io mi aspettavo molto di più.

    Personalmente cercavo in MODx un punto di partenza su cui sviluppare una serie di plugin da fornire ai miei clienti ma diventa sempre più probabile che nel corso del prossimo anno realizzerò un CMS alternativo basato su CakePHP, CakePower e BackboneJS.

    WordPress è vecchio dentro (in senso di codice), Joomla non è nemmeno considerato come una possibile soluzione.

    MODx è tanto osannato ma in realtà ha una base di codice piuttosto intricata e poco logica. Un approccio MVC che poco ha a che fare con l’MVC ed una gestione dei pacchetti molto bella lato utente ma infernale lato sviluppatore.

    Vedremo!

Swedish Greys - a WordPress theme from Nordic Themepark.