Buộc một trang được hiển thị trong chủ đề quản trị viên (chế độ lớp phủ)


13

Có cách nào để buộc một trang được hiển thị trong chủ đề quản trị viên, Giống như các trang mà đường dẫn của chúng bắt đầu bằng 'admin /'?

Câu trả lời:


4

Có một mô-đun contrib ThemeKey rằng

cho phép bạn xác định các quy tắc chuyển đổi chủ đề đơn giản hoặc phức tạp, cho phép tự động chọn chủ đề tùy thuộc vào đường dẫn hiện tại, thuật ngữ phân loại, ngôn ngữ, loại nút và nhiều thuộc tính khác. Nó cũng có thể dễ dàng được mở rộng để hỗ trợ các thuộc tính bổ sung được hiển thị bởi các mô-đun khác. Kết hợp với tính kế thừa chủ đề của Drupal và Thuộc tính ThemeKey, bạn có thể dễ dàng đạt được các tính năng như:

các kênh được tạo kiểu riêng lẻ một màn hình trang chủ / "giật gân" một chủ đề di động theo chủ đề Giáng sinh được chọn theo ngày / thời gian cho các thiết bị di động được phát hiện tự động khác nhau cho các chủ đề trình duyệt "giới hạn" hoặc "cũ", chủ đề người dùng hoặc vai trò cụ thể cho biết môi trường của bạn (sản xuất, dàn dựng, thử nghiệm, hộp cát, tầm nhìn) kiểm tra thiết kế lại của bạn một cách an toàn trên máy chủ trực tiếp

Kiểm tra câu hỏi cũng liên quan ở đây .


14

Bạn cũng có thể làm điều này bằng cách tạo một mô-đun tùy chỉnh.

Phương pháp 1

Sử dụng điều này nếu bạn muốn tạo chủ đề cho một trang hiện có, dựa trên đường dẫn nội bộ của Drupal (còn gọi là nguồn đường dẫn). Ví dụ này sử dụng hook_custom_theme .

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

Cách 2

Sử dụng điều này nếu bạn muốn tạo chủ đề cho một trang hiện có, dựa trên đường dẫn URL (còn gọi là bí danh đường dẫn). Ví dụ này cũng sử dụng 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');
  }
}

Phương pháp 3

Sử dụng điều này nếu bạn muốn chủ đề và tạo một trang. Ví dụ này sử dụng hook_menu . Để tìm hiểu thêm, hãy xem một bài viết tuyệt vời khác về 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

Nếu bạn là nhà phát triển mô-đun, bạn có thể sử dụng hook_admin_paths để xác định đường dẫn nào sẽ được hiển thị với chủ đề quản trị.


4

Chỉ cần cung cấp cho trang một đường dẫn bắt đầu với quản trị viên: 'admin / mypage'


1
Tại sao các downvote? Chức năng này nằm trong lõi D7, câu hỏi không chỉ định phiên bản nào, nhưng tại thời điểm áp phích câu hỏi D7 đã được phát hành.
MediaFormat

Đúng, bình luận hoàn toàn hợp lý IMO.
Countzero

2
Dường như các trang tùy chỉnh bắt đầu bằng 'admin /' nhất thiết phải tải chủ đề quản trị viên.
DrCord 3/03/2015

hoàn hảo và đơn giản cho quan điểm!
Patoshi パ ト

Điều này không hoạt động.
Christia

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.