Saya telah menyiapkan situs multilanguage di Drupal 7. Dalam sebuah templat saya perlu menambahkan tautan ke simpul konten tertentu. Node ini memiliki terjemahan dan alias path seperti:
node/42 = pathalias_de (german version)
node/43 = pathalias_en (english version)
Dalam templat yang ingin saya panggil url()
untuk mendapatkan tautan ke versi alias dari simpul konten dalam bahasa saat ini.
Pada halaman bahasa Jerman itu harus terhubung ke /de/pathalias_de
pada halaman bahasa Inggris ke/en/pathalias_en
Saya sudah mencoba beberapa variasi, seperti memanggil nid, memanggil alias, meneruskan objek bahasa saat ini url()
.
Apakah ini sesuatu yang url()
harus dapat dilakukan atau apakah saya memerlukan fungsi yang berbeda? Terima kasih!
sumber
$translations = translation_path_get_translations(drupal_get_normal_path("pathalias_de","de"));
untuk mencari alias alih-alih simpul id, itu lebih fleksibel. Anda harus melewati bahasa yang benar.sumber
Lihatlah fuction drupal_get_path_alias
Seperti yang Anda bisa lakukan, dibutuhkan parameter path_language. Jadi Anda bisa mengetahui bahasa saat ini dan kemudian meneruskan ke fungsi ini.
Atau cukup gunakan modul Multilink
sumber
drupal_get_path_alias()
tidak akan mencari terjemahan dari node yang diberikan, hanya untuk alias yang sudah dalam bahasa yang diberikan. Saya menemukan solusi lain, lihat jawaban saya di bawah ini.Tidak ada jawaban di atas yang menggunakan i18n_path dengan benar. Jika Anda ingin menautkan ke node yang diterjemahkan, Anda cukup mengaktifkan modul i18n_path dan memformat path demikian,
sumber
Anda mungkin harus menggunakan fungsi tautan . Ini memungkinkan Anda untuk lulus bahasa sebagai parameter dan itu fungsi yang tepat untuk membuat tautan dengan Drupal.
sumber
l()
menggunakan secaraurl()
internal sehingga tidak masalah dalam hal ini.Menggunakan Redirect Penerjemahan Anda dapat menautkan ke node dengan awalan bahasa.
Inilah yang dikatakan:
Sebagai contoh jika nid 22 adalah untuk versi bahasa Inggris dan memiliki yang Perancis dan Jerman maka Anda dapat dengan mudah menautkannya sebagai fr / node / 22 dan de / node / 22. 22 ini juga dapat berupa nid dari versi terjemahan.
Jika terjemahan tertentu tidak ditemukan misalnya jika Anda belum menambahkan untuk bahasa Jepang, maka ja / node / 22 akan memberikan 404 untuk pengguna Anonim.
sumber
Untuk mendapatkan jalur awalan yang benar, saya menggunakan:
Drupal_get_path_alias () hanya mengembalikan alias, url () adalah yang menambahkan awalan ("en /").
sumber