Bagaimana cara menghindari Drupal mengarahkan ulang halaman Tampilan multibahasa saya?

8

Saya memiliki halaman Tampilan di situs web multibahasa di mana saya memerlukan url yang berbeda untuk setiap bahasa, yaitu:

  • es: mysite / apartamentos.
  • id: situs saya / appartments.
  • fr: mysite / appartements.
  • ru: mysite / arendu.

Saya membuat alias url untuk setiap bahasa (yang merupakan situs saya / appartments meskipun bahasa default situs saya adalah Spanyol) sehingga alias Spanyol untuk appartmentsadalah apartamentosdan sebagainya. Saya membuat alias ini menggunakan configuration >> Search and Metadata >> URL aliases >> add alias.

Saya harus meneruskan parameter kueri ke tampilan untuk memfilter hasil sehingga url saya adalah sesuatu seperti mysite / en / appartments / p / location_field / 2 dan saya punya formulir tempat saya meletakkan tindakan secara manual seperti:

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

di mana halaman yang diterjemahkan dapat berupa apartamentos, appartments, appartements atau arendu, membuat url tindakan:

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

Masalah saya adalah ketika formulir ini dikirim, Drupal mengirim saya ke

mysite / es / appartments / p / location_field / 2

dari pada

mysite / es / apartamentos / p / location_field / 2

dan hal yang sama terjadi untuk semua bahasa. Sisa dari hal itu tampak baik dan bahkan remah roti (yang dihasilkan menggunakan url) terlihat benar (Inicio >> Apartamentos Costa Dorada, dalam bahasa Spanyol).

Ketika saya menggunakan bahasa, sakelar ini mengalihkan saya ke halaman yang diterjemahkan dengan benar tetapi tanpa parameter kueri (dari mysite/es/appartments/p/location_field/2situ mengirim saya ke mysite/es/apartamentos).

Saya tidak tahu apa yang menyebabkan masalah ini, mungkin parameter kueri mengganggu interpretasi alias?

Catatan : Saya memiliki banyak modul terjemahan yang diaktifkan. Untuk modul i18n ada: blok, bidang, menu, simpul, jalur, string, taksonomi, terjemahan (set terjemahan), variabel dan tampilan.

Miquel Correa Casablanca
sumber

Jawaban:

6

submodule i18n_path

Saya berasumsi Anda juga menggunakan modul i18n . Jadi pastikan Anda juga mengaktifkan i18n_pathsubmodule (= Path translation). Lebih detail tentang itu, dari dokumentasi komunitas (marka tebal ditambahkan di sini):

... memungkinkan Anda untuk memetakan bersama halaman yang ada yang merupakan terjemahan satu sama lain. Ini akan memungkinkan pengguna untuk menggunakan pengalih bahasa untuk bernavigasi di antara halaman terkait.

Modul ini dimaksudkan untuk digunakan sebagai upaya terakhir untuk menerjemahkan jalur yang tidak dapat dipetakan bersama sebagai terjemahan. Misalnya, jalur ke node yang diterjemahkan sudah dapat ditautkan dengan modul terjemahan Konten dan jalur ke istilah taksonomi yang diterjemahkan dapat dihubungkan dengan modul terjemahan Taksonomi. Terjemahan jalur harus digunakan untuk menghubungkan jalur generik, seperti yang disediakan oleh Views atau Panel.

Untuk mengatur terjemahan jalur tertentu, Anda perlu membuat set terjemahan path dengan membuka Konfigurasi> Regional dan bahasa> Kumpulan terjemahan> Jalur dan mengklik Tambah terjemahan jalur.

i18n tampilan halaman

Anda mungkin juga ingin memeriksa apakah Anda dapat membuatnya bekerja menggunakan modul tampilan halaman i18n . Beberapa detail dari halaman proyeknya:

... memberikan tampilan tampilan baru, tempat Anda dapat memilih jalur berbeda untuk setiap bahasa yang diaktifkan di situs Anda, sehingga tampilan memiliki rute lokal untuk setiap bahasa.

Catatan 1 : " jika Anda tidak dapat menemukan opsi dalam tampilan untuk menerjemahkan jalur " (seperti dalam komentar Anda di bawah), maka Anda mungkin ingin melihat apa yang disebutkan dalam Komentar # 1 edisi 2389535 , yang menyatakan:

... Mungkin Anda telah memilih tampilan halaman daripada tampilan halaman i18n ketika Anda membuat tampilan. Pastikan Anda memilih tampilan tampilan yang benar. Saya lampirkan beberapa tangkapan layar untuk membantu:

Sidik jari 1 :

masukkan deskripsi gambar di sini

Sidik jari 2 :

masukkan deskripsi gambar di sini

Catatan 2 : Untuk menjawab pertanyaan tentang " Apakah saya harus membuat seluruh halaman tampilan lagi untuk menjadikannya sebagai i18n_page? " (Seperti dalam salah satu komentar Anda (sekarang dihapus) di bawah jawaban ini), saya akan mencoba menggunakan salah satu pendekatan yang dijelaskan dalam jawaban pertanyaan di Cara menduplikasi tampilan Tampilan (yang bukan master) sebagai jenis tampilan yang berbeda? ... Jika itu tidak berhasil / diterapkan, maka rekreasi seluruh halaman tampilan sepertinya satu-satunya pilihan yang tersisa.

Pierre
sumber
3

Hapus path-alias dan coba kodekan kasus khusus ini sendiri, menggunakan

hook_url_inbound_alter dan atau hook_url_outbound_alter

atau cukup lakukan jalur Anda sendiri melalui callback halaman kustom (hook_menu) dan kemudian tampilkan tampilan dengan views_embed_view.

Anda juga dapat mengubah aksi dari bentuk filter yang terbuka:

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

Atau:

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

Diambil formulir di sini Bagaimana cara saya mengubah URL kirim untuk filter pencarian terbuka?

Remy
sumber