Làm cách nào để ghi đè một số quy tắc CSS của chủ đề quản trị viên? [đóng cửa]


20

Có cách nào để ghi đè chỉ một số quy tắc CSS được sử dụng bởi chủ đề quản trị viên mà không cần chạm vào chính chủ đề quản trị viên (thông qua một số chức năng chủ đề hoặc móc mô-đun) không? Ví dụ: tôi muốn thêm một text-align: rightvào mỗi trường số nguyên trong các biểu mẫu quản trị viên (và trong các nút chỉnh sửa nữa).


5
Câu hỏi hoàn toàn hợp lệ không nên đóng. Thường cần phải điều chỉnh chủ đề quản trị viên (thường là Bảy) trong đó việc tạo chủ đề phụ mới sẽ là quá mức cần thiết.
Kari Kääriäinen

Câu trả lời:


15

Tôi đã làm nó chỉ bằng cách sử dụng:

function mymodule_preprocess_html(&$variables) {

  global $theme;

  if ($theme === variable_get('admin_theme', 'seven')) {

    // Reference your custom stylesheet.
    drupal_add_css(drupal_get_path('module', 'mymodule') . '/css/mymodule.css', array('weight' => CSS_THEME));
  }
}

Đó là một chút dễ đọc hơn đối với tôi.


1
Làm việc hoàn hảo cho tôi, quá. Dung dịch sạch.
Sasha Grievus

Có một phiên bản 8 drupal của mã tiện dụng này?
petergus

11

Có một số cách để làm điều này nhưng không phải tất cả các cách tiếp cận đều bình đẳng về mặt ảnh hưởng đến hiệu suất của trang web của bạn. Ví dụ:

  1. Nếu bạn sao chép chủ đề quản trị viên hoặc tạo một tiểu trình dựa trên chủ đề quản trị viên (lưu ý, điều này sẽ không hoạt động với Drupal Commerce, vì nó đã có một tiểu trình dựa trên Shiny) - và sau đó thêm tệp css qua .info gọi , bạn sẽ tải CSS trên mỗi trang.
  2. Nếu bạn sao chép chủ đề quản trị hoặc tạo một chủ đề con dựa trên chủ đề quản trị viên, bạn có thể sử dụng hook drupal_add_css () trong tệp template.php của mình . Điều này sẽ cho phép bạn gọi biểu định kiểu một cách có điều kiện, ví dụ trên một số trang nhất định hoặc cho một số trình duyệt nhất định. Điều này hoạt động ổn nhưng bạn đã gọi nhiều tệp hơn mức cần thiết.
  3. Tạo mô-đun của riêng bạn và gọi drupal_add_css () từ nó. Theo tôi biết, đây là cách 'nhẹ nhất' để thay đổi chủ đề quản trị viên mà không cần chạm vào bản gốc và sẽ hoạt động nếu chủ đề quản trị viên của bạn đã là một chương trình con (ví dụ: chủ đề Quản trị viên Kickstart của Kickupart là một mô hình con của Shiny). Tôi sử dụng phương pháp này bởi vì nó sẽ hoạt động trong mọi hoàn cảnh. Xem ví dụ bên dưới:

Tạo một thư mục có tên 'mymodule' (sử dụng bất kỳ tên nào bạn muốn), tạo các tệp này trong đó và sau đó đặt nó trong thư mục trang web / all / module / custom của bạn. Tôi đã thêm nhận xét vào mã bên dưới để bạn có thể thấy những gì đang xảy ra.

  • mymodule.info
  • mymodule.module
  • css / mymodule.css

mymodule.info chứa:

name = mymodule
description = Custom alterations for admin pages on my website
core = 7.x

mymodule.module chứa:

function mymodule_preprocess_html(&$variables) {
  // Add conditional stylesheets for admin pages on admin theme.
  if (arg(0) === "admin") {
    // Reference your current admin theme.
    $theme_path = drupal_get_path('theme', 'commerce_kickstart_admin');
    // Reference your own stylesheet.
    drupal_add_css(drupal_get_path('module', 'mymodule') . '/css/mymodule.css', array('weight' => CSS_THEME));
  }
}

css / mymodule.css sau đó sẽ có các kiểu của bạn được thêm vào chủ đề quản trị viên. Xóa bộ nhớ cache của bạn, kích hoạt mô-đun này và bạn sẽ tham gia cuộc đua! Tìm hiểu thêm về drupal_add_css tại đây .


2
Không cần $theme_pathbiến nếu bạn sử dụng đường dẫn mô-đun hiện tại ... và CSS_THEMEkhông phải là trọng số mà là một nhóm:array('group' => CSS_THEME)
MrUpsidown

Có một phiên bản 8 drupal của mã tiện dụng này?
petergus

9

Những gì tôi làm là tạo một chủ đề phụ cho bất kỳ chủ đề quản trị viên nào tôi đang sử dụng chỉ với .infomột tệp CSS duy nhất (thường được đặt tên overrides.css) và một template.phptệp nếu cần thiết.


2

Còn CSS In phun thì sao?

Tôi không biết liệu nó có cho phép quy tắc cấu hình phụ thuộc chủ đề hay không, nhưng tôi cho rằng nó cho phép một quy tắc dựa trên đường dẫn (vì vậy admin / , node / add / , node / * / edit nên thực hiện thủ thuật).


Ý tưởng tốt. Đã thử nó, nhưng có vẻ như nó không hoạt động (quy tắc CSS không thực sự được lưu!). Tôi cũng nghi ngờ rằng nó sẽ hoạt động với hệ thống lớp phủ (có vẻ như vấn đề nằm ở file_unmanaged_save_data () không tiết kiệm được gì. Nhưng thiết lập của tôi hơi lạ - một hộp ubfox bên trong vbox OSX).
Claudio

Hừm. Có thể một lỗi hoặc một cái gì đó như thế trong phiên bản hiện tại. Tôi nghĩ rằng nó nên hoạt động trong lý thuyết bên trong lớp phủ. Nó cũng có thể hiển thị lớp phủ với một chủ đề khác
Berdir
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.