Saya memiliki instance Drupal yang berjalan di example.org. Yang memiliki tema X diinstal dan diaktifkan. Sekarang untuk periode terbatas, sebuah acara seharusnya diadakan di situs yang bagian khususnya telah "diukir". Semua hal yang terkait dengan acara itu akan masuk ke example.org/event2011.
Saya ingin memiliki tema yang berbeda untuk ditampilkan setiap kali halaman di bawah bagian ini dilihat (misalnya http://example.org/event2011/about , http://example.org/event2011/node/123 ). Bagaimana aku melakukan itu?
Saya telah melalui banyak modul, tetapi tidak ada satupun yang mendukung Drupal 7. Lebih disukai, saya ingin itu dilakukan menggunakan modul dan tidak ingin mengubah apa pun diri saya di level kode.
Jawaban:
Menimbang bahwa perubahan itu untuk jangka waktu terbatas, dan menerapkan kode seperti itu tidak sulit, saya akan menyarankan untuk menerapkan modul khusus yang mengubah tema yang digunakan untuk halaman tertentu.
Cukup untuk diimplementasikan
hook_custom_theme()
sebagai berikut:Jika Anda perlu mengubah tema hanya untuk http://example.com/event2011 , tetapi tidak untuk http://example.com/event2011/node/123 , maka kode harus diubah menjadi
Adapun untuk menggunakan panggilan balik tema dalam definisi panggilan balik menu, dokumentasi mengatakan:
sumber
Solusi khusus seperti yang disarankan komentar lain mungkin yang terbaik, tetapi jika Anda benar-benar ingin menggunakan modul, taruhan terbaik Anda adalah ThemeKey . Pada 5/23/11, ia memiliki rilis yang stabil.
sumber
Atau Anda dapat menggunakan
theme callback
opsi baru dari sistem menuhook_menu_alter()
seperti diuraikan di bawah ini. ps Periksa hook_menu () untuk detail lebih lanjut tentangtheme callback
Selain itu ada juga contoh menggunakan yang lebih tradisional
hook_custom_theme()
Diambil dari: http://drupal.org/node/224333#custom_theme
sumber
Anda cukup menggunakan Konteks dan menggunakan tema untuk diterapkan ketika path adalah / event2011 / Anda dapat dengan mudah mengatur path dalam kondisi cotext dan mengubah tema dalam aksi konten. Ini adalah Anda dapat dengan mudah beralih antar tema di situs berdasarkan URL. Bahkan berfungsi untuk ponsel;)
sumber
Menggunakan ThemeKey sederhana dan merupakan modul yang paling populer dan kuat sejauh ini (dengan dukungan untuk 8.x) untuk aturan pengalihan tema yang memungkinkan pemilihan tema secara otomatis tergantung pada jalur saat ini, istilah taksonomi, bahasa, tipe-simpul, dan banyak lagi, banyak properti lainnya. Itu juga dapat dengan mudah diperluas untuk mendukung properti tambahan yang diekspos oleh modul lain. Di samping fitur standar, ThemeKey secara otomatis memperluas fitur dari banyak modul contrib dan memiliki modul yang memperluasnya.
Penggunaan (7.x)
Setelah mengaktifkan modul, buka
admin/config/user-interface/themekey
. Ada banyak opsi untuk mengganti tema, tetapi mungkin Anda akan tertarikpath:node_alias
, jadi tetapkan nilainya sesuai keinginan Anda seperti yang Anda katakan / my_url lalu pilih tema yang ingin Anda aktifkan di url ini. Anda juga dapat menggunakan wildcard sepertiweb/*
atau/^web/.*
.Periksa: Bagaimana Muat Tema Untuk Path
Penggunaan tingkat lanjut
ThemeKey 7.x berisi modul opsional yang disebut Contoh ThemeKey untuk menunjukkan kepada pengembang cara memperluas ThemeKey.
Bantuan (7.x)
Lihatlah tutorial video dari Mustardeed (7.x).
Bantuan lebih lanjut tentang topik itu dapat ditemukan di
/admin/help/themekey
.Periksa juga pertanyaan SE lainnya yang terkait dengan tema tersebut .
Atau ada juga Switchtheme (7.x) yang menambahkan blok untuk memungkinkan pengguna untuk beralih di antara tema yang diaktifkan.
sumber
Saat menggunakan alias alias URL atau modul Pathauto , waspadai perbedaan dan perbedaan saat menggunakan komponen jalur Drupal saat ini.
Ada situasi di mana Anda mungkin tidak ingin menggunakan arg () . Bahkan, dokumentasi Drupal API sebenarnya menyarankan untuk menghindari penggunaan fungsi ini jika memungkinkan, karena kode yang dihasilkan sulit dibaca.
Pertimbangkan contoh berikut, seperti yang diusulkan oleh kiamlaluno :
Di Drupal 7, jika sebuah node memiliki alias event2011 , menggunakan
arg(0)
akan kembalinode
sebagai komponen URL pertama, sebagai lawan dari alias.Sebaliknya, jika Anda perlu untuk bekerja dengan alias ada beberapa cara untuk mendapatkan URL saat ini di Drupal , termasuk
menu_get_object()
,current_path()
,request_path()
dan lain-lain.Berikut adalah contoh yang dikerjakan ulang yang menggunakan alias sebagai pemicu untuk mengalihkan tema:
sumber
Cara beralih tema tergantung pada peran pengguna:
Buat modul khusus dan salin & tempel yang berikut ini:
Anda harus mengganti:
mymodule
=> dengan nama modul Andaperan khusus saya => dengan nama peran yang harus dimiliki pengguna Anda agar mereka dapat melihat tema yang berbeda.
mytheme
=> dengan nama tema yang ingin Anda alihkansumber
Anda bisa menggunakan modul Tema Halaman untuk mencapai hal itu
sumber
Anda dapat menggunakan modul Tema Halaman untuk mencapai hal itu: Modul Tema Halaman adalah modul sederhana dan mudah digunakan yang memungkinkan untuk menggunakan tema yang berbeda dari standar situs pada halaman tertentu.
Fitur :
Tetapkan tema ke satu halaman atau daftar halaman. (Tetapkan halaman sebagai jalur Drupal) Izinkan untuk menggunakan karakter '*' sebagai wildcard di jalur Drupal. Izinkan untuk mengatur tema. (Jika beberapa halaman didefinisikan, tema pertama dalam daftar akan digunakan) Izinkan untuk mengaktifkan / menonaktifkan tema. Drupal pemula yang ramah.
seperti yang akan Anda gunakan: Bagian yang memiliki sebagian besar fitur yang sama dengan Page Theme, tetapi menambahkan pilihan berdasarkan peran dan area "php snippet" untuk memilih tema.
tetapi jika Anda ingin menggunakan tema yang berbeda dari standar situs pada pembuatan konten, pengeditan, dan melihat halaman Anda dapat menggunakan Tema Konten yang memungkinkan untuk menggunakan tema yang berbeda dari standar situs pada pembuatan konten, pengeditan, dan melihat halaman.
sumber