Come evitare che Drupal reindirizzi le mie pagine di visualizzazioni multilingue?


8

Ho una pagina Visualizzazioni in un sito Web multilingue in cui ho bisogno di un URL diverso per ogni lingua, ovvero:

  • es: mysite / apartamentos.
  • en: mysite / appartments.
  • fr: mysite / appartements.
  • ru: mysite / arendu.

Ho creato un alias url per ogni lingua (che è mysite / appartamenti sebbene la lingua predefinita del mio sito sia lo spagnolo), quindi l'alias spagnolo appartmentsè apartamentose così via. Ho creato questi alias usando configuration >> Search and Metadata >> URL aliases >> add alias.

Devo passare i parametri della query alla vista per filtrare i risultati in modo che il mio URL sia qualcosa di simile a mysite / en / appartments / p / location_field / 2 e ho un modulo in cui inserisco manualmente l'azione come:

echo "/".$language."/".$translated_page

dove la pagina tradotta può essere appartamenti, appartamenti, appartamenti o arendu, rendendo l'azione url:

/ es / apartamentos, / fr / appartements, / en / appartments e / ru / arendu

Il mio problema è che quando viene inviato questo modulo Drupal mi invia

miosito / es / appartamenti / p / location_field / 2

invece di

miosito / es / apartamentos / p / location_field / 2

e lo stesso accade per tutte le lingue. Il resto della cosa sembra a posto e anche il pangrattato (che viene generato usando l'URL) sembra corretto (Inicio >> Apartamentos Costa Dorada, in spagnolo).

Quando utilizzo il cambio di lingua mi reindirizza alla pagina tradotta corretta ma senza i parametri di query (da mysite/es/appartments/p/location_field/2esso mi invia a mysite/es/apartamentos).

Non so che cosa può causare questo problema, forse i parametri della query interferiscono con l'interpretazione dell'alias?

Nota : ho molti moduli di traduzione abilitati. Per i moduli i18n ci sono: blocco, campo, menu, nodo, percorso, stringa, tassonomia, traduzione (set di traduzioni), variabile e viste.


Risposte:


6

sottomodulo i18n_path

Presumo che tu stia utilizzando anche il modulo i18n . Quindi assicurati di aver abilitato anche il i18n_pathsottomodulo (= traduzione del percorso). Maggiori dettagli a riguardo, dalla documentazione della comunità (marcatura in grassetto aggiunta qui):

... ti consente di mappare insieme le pagine esistenti che sono traduzioni reciproche. Ciò consentirà agli utenti di utilizzare il selettore di lingua per navigare tra le pagine associate.

Il modulo è pensato per essere utilizzato come ultima risorsa per tradurre percorsi che altrimenti non possono essere mappati insieme come traduzioni. Ad esempio, i percorsi dei nodi tradotti possono già essere collegati con il modulo di traduzione del contenuto e i percorsi dei termini di tassonomia tradotti possono essere collegati con il modulo di traduzione della tassonomia. Le traduzioni dei percorsi devono essere utilizzate per collegare percorsi generici, come quelli forniti da Viste o Pannelli.

Per impostare le traduzioni di un determinato percorso, è necessario creare un set di traduzione del percorso andando su Configurazione> Regionale e lingua> Set di traduzione> Percorsi e facendo clic su Aggiungi traduzione del percorso.

visualizzazioni di pagina i18n

Puoi anche verificare se riesci a farlo funzionare utilizzando il modulo di visualizzazione delle pagine i18n . Alcuni dettagli dalla sua pagina del progetto:

... fornisce una nuova visualizzazione di visualizzazioni, in cui è possibile selezionare percorsi diversi per ciascuna lingua abilitata sul proprio sito, quindi una visualizzazione ha un percorso localizzato per ogni lingua.

Nota 1 : " se non riesci a trovare alcuna opzione nella vista per tradurre il percorso " (come nel tuo commento qui sotto), allora potresti voler dare un'occhiata a ciò che è menzionato nel commento n. 1 del numero 2389535 , che afferma:

... Forse hai scelto una visualizzazione di pagina anziché una visualizzazione di pagina i18n quando hai creato la vista. Assicurati di aver selezionato la visualizzazione corretta delle visualizzazioni. Allego alcuni screenshot per aiutare:

Serigrafia 1 :

inserisci qui la descrizione dell'immagine

Serigrafia 2 :

inserisci qui la descrizione dell'immagine

Nota 2 : per rispondere alla domanda " Dovrò creare di nuovo l'intera pagina di visualizzazione per renderla una pagina i18n_ " (come in uno dei tuoi commenti (ora eliminati) sotto questa risposta), proverei usando uno degli approcci descritti nelle risposte alla domanda in Come duplicare un display Views (che non è il master) come un diverso tipo di display? ... Se non funziona / si applica, la ricreazione dell'intera pagina della vista sembra l'unica opzione rimasta.


3

Rimuovi l'alias del percorso e prova a scrivere tu stesso questo caso speciale, usando

hook_url_inbound_alter e o hook_url_outbound_alter

oppure fai semplicemente i tuoi percorsi tramite callback personalizzati (hook_menu) e poi mostra la vista con views_embed_view.

È inoltre possibile modificare l'azione del modulo del filtro esposto:

/**
 * Implements hook_form_alter().
 */
function foo_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'views_exposed_form') {
    $form['#action'] = current_path();
  }
}

O:

/**
 * Implements hook_form_views_exposed_form_alter().
 */
function foo_form_views_exposed_form_alter(&$form, &$form_state) {
  if ($form['#id'] == 'views-exposed-form-foo-default') { // Or: if ($form['#action'] === '/foo')
    $form['#action'] = '/bar';
  }
}

Modulo preso qui Come posso modificare l'URL di invio per il filtro di ricerca esposto?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.