Paksa halaman yang akan dirender dalam tema admin (mode overlay)


13

Apakah ada cara untuk memaksa halaman yang akan dirender dalam tema admin, Seperti halaman yang jalurnya dimulai dengan 'admin /'?

Jawaban:


4

Ada modul contrib ThemeKey itu

memungkinkan Anda untuk menentukan aturan pengalihan tema sederhana atau canggih yang memungkinkan pemilihan otomatis tema tergantung pada jalur saat ini, istilah taksonomi, bahasa, tipe-simpul, dan banyak, banyak properti lainnya. Itu juga dapat dengan mudah diperluas untuk mendukung properti tambahan yang diekspos oleh modul lain. Dalam kombinasi dengan pewarisan tema Drupal dan Properti ThemeKey Anda dapat dengan mudah mencapai fitur seperti:

bergaya individual menyalurkan layar halaman depan / "percikan" tema ponsel tema Natal yang dipilih tanggal / waktu untuk berbagai perangkat seluler yang dideteksi secara otomatis tema khusus untuk konten, pengguna, atau peran "terbatas" atau "browser" browser tertentu menunjukkan lingkungan Anda (produksi, pementasan, pengujian, kotak pasir, ...) menguji desain ulang Anda dengan aman di server langsung

Lihat juga pertanyaan terkait di sini .


14

Anda juga dapat melakukan ini dengan membuat modul khusus.

Metode 1

Gunakan ini jika Anda ingin tema halaman yang ada, berdasarkan jalur internal Drupal (alias jalur sumber). Contoh ini menggunakan hook_custom_theme .

<?php
function MYMODULE_custom_theme() {
  // match node/1
  if (arg(0) == 'node' && arg(1) == '1') {
    return variable_get('admin_theme');
  }
}

Metode 2

Gunakan ini jika Anda ingin tema halaman yang ada, berdasarkan jalur URL (alias path alias). Contoh ini juga menggunakan hook_custom_theme .

<?php
function MYMODULE_custom_theme() {
  // get arguments
  $arg = explode('/', substr(request_uri(), strlen(base_path())));
  // match {wildcard}/path 
  // Using strpos as $arg[1] may end up having stuff like so ?order=title&sort=asc
  if (isset($arg[1]) && strpos($arg[1], 'path') !== false && !isset($arg[2])) {
    return variable_get('admin_theme');
  }
}

Metode 3

Gunakan ini jika Anda ingin tema dan membuat halaman. Contoh ini menggunakan hook_menu . Untuk mempelajari lebih lanjut, lihat artikel hebat lainnya di hook_menu .

<?php
function MYMODULE_menu() {
  $items = array();

  // match some/path
  $output['some/path'] = array(
    'title' => t('Page Title'),
    'page callback' => 'MYMODULE_page',
    'theme callback' => 'variable_get',
    'theme arguments' => array('admin_theme'),
  )
}

function MYMODULE_page() {
  return 'Hello world.';
}

7

Jika Anda seorang pengembang modul, Anda dapat menggunakan hook_admin_paths untuk menentukan jalur mana yang akan diberikan dengan tema administrasi.


4

Cukup beri halaman path yang dimulai dengan admin: 'admin / mypage'


1
Mengapa downvote? Fungsionalitas ini ada di inti D7, pertanyaannya tidak menentukan versi mana, tetapi pada saat poster pertanyaan D7 dirilis.
MediaFormat

Ya, komentar IMO yang sangat masuk akal.
Countzero

2
sepertinya halaman khusus yang diawali dengan 'admin /' tidak perlu memuat tema admin.
DrCord

sempurna dan sederhana untuk dilihat!
Patoshi パ ト シ

Ini tidak bekerja.
Christia

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.