Saya sibuk mengerjakan situs di localhost saya yang perlu menautkan ke beberapa konten yang terpisah dari Drupal.
Saya memiliki menu jalur saat ini diatur seperti ini: http://mylocalsite/the_folder_for_the_other_content
. Jika saya mencoba
<front>/the_folder_for_the_other_content
atau /the_folder_for_the_other_content
atau the_folder_for_the_other_content
, saya mendapatkan kesalahan "Path 'whatever_I_use' salah atau Anda tidak memiliki akses ke sana."
Ketika saya siaran langsung, saya jelas membutuhkan semua item menu untuk menunjuk http://myrealsite/the_folder_for_the_other_content
.
Bagaimana saya mengaturnya sehingga saya tidak perlu mengedit semua jalur menu ketika saya tayang?
http://example.com/
.Jawaban:
Jawaban kiamlaluno tidak cukup untuk saya. Menggunakan% menu_tail menghasilkan badai kesalahan bahwa fungsi menu_tail_load mengalami masalah dengan argumen yang hilang:
Apa yang berhasil bagi saya adalah
Kemudian, saya bisa menyajikan file di folder situs / d8 / file (dan subfolder) menggunakan item menu dengan path seperti
sites/d8/files/Documents/MyFile.pdf
Sistem menu kemudian akan menghasilkan tautan seperti
href="https://drupal.stackexchange.com/sites/d8/files/Documents/MyFile.pdf"
Jika Anda tidak menggunakan modul menu khusus, sistem menu akan menolak jalur yang dimulai seperti di atas.
Jika Anda mencoba menggunakan path seperti
http:sites/d8/files/Documents/MyFile.pdf
, itu akan menghasilkan tautan sepertihref="http:sites/d8/files/Documents/MyFile.pdf"
, yang akan berfungsi ketika Anda berada di root situs, tetapi ketika Anda berada di halaman konten, browser akan menafsirkan url relatif terhadap halaman konten, dan itu tidak akan berhasil.Jika Anda menggunakan jalur seperti
http:/sites/d8/files/Documents/MyFile.pdf
, sistem menu akan menerimanya, tetapi sistem menu akan menghasilkan tautan sepertihref="http:/sites/d8/files/Documents/MyFile.pdf"
, yang ditafsirkan peramban (setidaknya Safari) sebagaihref="http://sites/d8/files/Documents/MyFile.pdf"
, dan gagal mencoba menemukan server bernama "situs".(Pada penyelidikan lebih lanjut, alasan kode menggunakan menu_tail gagal adalah bahwa Anda perlu menambahkan 'memuat argumen', seperti yang tercantum di sini: http://api.drupal.org/api/drupal/includes--menu.inc/function / menu_tail_load / 7. Jika Anda menambahkan
'load arguments' => array('%map', '%index'),
definisi $ items dalam kode kiamlaluno, itu akan berhasil. Masalah apakah menu_tail_load harus memerlukan argumen memuat eksplisit juga dibahas di sini: http://drupal.org/node/298561 )(Jangan lupa untuk mengaktifkan modul baru Anda, atau sistem menu tidak akan menerima tautan baru)
sumber
Ketika Anda menambahkan tautan baru, tautan tersebut divalidasi dari menu_edit_item_validate () , yang memanggil drupal_valid_path () untuk memeriksa apakah jalur tersebut valid, atau dapat diakses dari pengguna.
drupal_valid_path()
kembaliTRUE
jika<front>
(<front>/directory
, atau path serupa dikecualikan)TRUE
)Selain menggunakan URL absolut, satu-satunya solusi adalah memiliki modul khusus yang menentukan panggilan balik menu yang terkait dengan jalur yang ingin Anda gunakan.
Ketika Anda menggunakan URL yang mengarah ke file, atau direktori, server web harus menunjukkan file atau direktori itu, tanpa memanggil Drupal. Itulah yang terjadi dengan Apache, karena file .htaccess yang datang dengan Drupal berisi arahan berikut:
Dalam kasus Anda, modul khusus harus berisi kode yang mirip dengan yang berikut:
Anda dapat menggunakan nilai apa pun untuk panggilan balik judul dan halaman , karena panggilan balik menu itu seharusnya tidak pernah dipanggil. Nilai panggilan balik akses mengatakan kepada Drupal bahwa setiap pengguna memiliki akses ke panggilan balik menu itu.
Sebagai alternatif, Anda dapat menentukan callback menu yang terkait dengan "alias_for_directory /% menu_tail" yang mengarahkan pengguna ke direktori yang Anda inginkan (menggunakan drupal_goto () ). Saya akan menggunakan solusi ini ketika server tidak menggunakan konten .htaccess, dan itu akan meminta Drupal bahkan ketika URL menunjuk ke file atau direktori yang ada.
sumber
Bagi saya yang berikut melakukan trik (pada drupal 6).
Saya ingin mengarahkan ke URL lain di domain yang sama, katakanlah Drupal sedang berjalan
http://www.example.com
dan saya ingin memiliki tautanhttp://www.example.com/frontend
Di item menu, silakan masukkan sebagai jalur:
Menu drupal akan ditautkan ke:
http://www.example.com/frontend
Saat Anda menggunakan https, Anda harus memasukkan https: / frontend di bidang path untuk item menu.
sumber
Saya menyelesaikan masalah tautan saya dengan yang berikut:
http://groups.drupal.org/node/210308 dan http://drupal.org/node/372252
Ternyata tema saya salah mencetak menu sehingga semua item relatif terhadap lokasi saya saat ini (yaitu admin / logout, bukan / logout).
Semoga ini membantu.
sumber
Saya menggunakan sql untuk mengganti tautan dalam struktur menu:
Tidak yakin apakah saya perlu melakukan ini tetapi saya kemudian mem-cache menu.
sumber