Wie vermeide ich, dass Drupal meine mehrsprachigen Ansichtsseiten umleitet?

8

Ich habe eine Ansichtsseite in einer mehrsprachigen Website, auf der ich für jede Sprache eine andere URL benötige, dh:

  • es: Mysite / Apartamentos.
  • de: mysite / wohnungen.
  • fr: mysite / wohnungen.
  • ru: mysite / arendu.

Ich habe einen URL-Alias ​​für jede Sprache erstellt (das ist mysite / appartments, obwohl die Standardsprache meiner Site Spanisch ist), also ist der spanische Alias ​​für appartmentsis apartamentosund so weiter. Ich habe diese Aliase mit erstellt configuration >> Search and Metadata >> URL aliases >> add alias.

Ich muss Abfrageparameter an die Ansicht übergeben, um die Ergebnisse zu filtern, sodass meine URL ungefähr mysite / de / appartments / p / location_field / 2 lautet und ich ein Formular habe, in dem ich die Aktion manuell einfüge:

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

wobei die übersetzte Seite Apartamentos, Appartments, Appartements oder Arendu sein kann, wodurch die Aktions-URL erstellt wird:

/ es / Apartamentos, / fr / Appartements, / de / Appartments und / ru / arendu

Mein Problem ist, dass Drupal mich sendet, wenn dieses Formular gesendet wird

mysite / es / appartments / p / location_field / 2

anstatt

Mysite / es / Apartamentos / p / location_field / 2

und das gleiche gilt für alle Sprachen. Der Rest der Sache scheint in Ordnung zu sein und sogar der Brotkrumen (der mithilfe der URL generiert wird) sieht korrekt aus (Inicio >> Apartamentos Costa Dorada, auf Spanisch).

Wenn ich den Sprachschalter verwende, werde ich zur korrekt übersetzten Seite weitergeleitet, jedoch ohne die Abfrageparameter (von denen mysite/es/appartments/p/location_field/2ich an gesendet werde mysite/es/apartamentos).

Ich weiß nicht, was dieses Problem verursachen kann. Vielleicht stören die Abfrageparameter die Alias-Interpretation.

Hinweis : Ich habe viele Übersetzungsmodule aktiviert. Für die i18n- Module gibt es: Block, Feld, Menü, Knoten, Pfad, Zeichenfolge, Taxonomie, Übersetzung (Übersetzungssätze), Variable und Ansichten.

Miquel Correa Casablanca
quelle
Werfen
Sie

Antworten:

6

Submodul i18n_path

Ich gehe davon aus, dass Sie auch das i18n- Modul verwenden. Stellen Sie also sicher, dass Sie auch das i18n_pathSubmodul aktiviert haben (= Pfadübersetzung). Weitere Details dazu finden Sie in der Community-Dokumentation (fett gedrucktes Markup hier hinzugefügt):

... ermöglicht es Ihnen, vorhandene Seiten, die Übersetzungen voneinander sind, zusammenzufassen. Auf diese Weise können Benutzer den Sprachumschalter verwenden, um zwischen den zugeordneten Seiten zu navigieren.

Das Modul soll als letzter Ausweg für die Übersetzung von Pfaden verwendet werden, die sonst nicht als Übersetzungen zugeordnet werden können. Beispielsweise können Pfade zu übersetzten Knoten bereits mit dem Inhaltsübersetzungsmodul verknüpft werden, und Pfade zu übersetzten Taxonomiebegriffen können mit dem Taxonomieübersetzungsmodul verknüpft werden. Pfadübersetzungen sollten verwendet werden, um generische Pfade zu verknüpfen, z. B. die von Ansichten oder Bedienfeldern bereitgestellten .

Um Übersetzungen eines bestimmten Pfads einzurichten, müssen Sie einen Pfadübersetzungssatz erstellen, indem Sie unter Konfiguration> Regional und Sprache> Übersetzungssätze> Pfade auf Pfadübersetzung hinzufügen klicken.

i18n Seitenaufrufe

Möglicherweise möchten Sie auch überprüfen, ob Sie es mit dem i18n-Seitenaufrufmodul zum Laufen bringen können . Einige Details von seiner Projektseite:

... bietet eine neue Anzeige von Ansichten, in der Sie für jede auf Ihrer Site aktivierte Sprache unterschiedliche Pfade auswählen können, sodass eine Ansicht für jede Sprache eine lokalisierte Route enthält.

Hinweis 1 : " Wenn Sie in der Ansicht keine Option zum Übersetzen des Pfads finden " (wie in Ihrem Kommentar unten), sollten Sie sich ansehen, was in Kommentar 1 der Ausgabe 2389535 erwähnt wird , in dem es heißt:

... Möglicherweise haben Sie beim Erstellen Ihrer Ansicht eine Seitenanzeige anstelle einer i18n-Seitenanzeige ausgewählt. Stellen Sie sicher, dass Sie die richtige Ansichtsanzeige ausgewählt haben. Ich füge einige Screenshots bei, um zu helfen:

Siebdruck 1 :

Geben Sie hier die Bildbeschreibung ein

Siebdruck 2 :

Geben Sie hier die Bildbeschreibung ein

Hinweis 2 : Um die Frage zu " Muss ich die gesamte Ansichtsseite erneut erstellen, um sie als i18n_page zu erstellen? " (Wie in einem Ihrer (jetzt gelöschten) Kommentare unter dieser Antwort) zu beantworten, würde ich es versuchen einer der in den Antworten auf die Frage unter Wie dupliziere ich eine Ansichtsanzeige (die nicht der Master ist) als einen anderen Anzeigetyp beschriebenen Ansätze ? ... Wenn dies nicht funktioniert / zutrifft, scheint die Neuerstellung der gesamten Ansichtsseite die einzige verbleibende Option zu sein.

Pierre.Vriens
quelle
3

Entfernen Sie den Pfad-Alias ​​und versuchen Sie, diesen Sonderfall selbst mit zu codieren

hook_url_inbound_alter und oder hook_url_outbound_alter

Oder erstellen Sie einfach Ihre eigenen Pfade über benutzerdefinierte Seitenrückrufe (hook_menu) und zeigen Sie die Ansicht mit views_embed_view an.

Sie können auch die Aktion der Form des exponierten Filters ändern:

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

Oder:

/**
 * 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';
  }
}

Hier aufgenommene Form Wie ändere ich die Übermittlungs-URL für den exponierten Suchfilter?

rémy
quelle