it-swarm-vi.com

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

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 text-align: right cho mọi trường số nguyên trong biểu mẫu quản trị (và trong các nút chỉnh sửa cũng vậy).

20
Claudio

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.

15
Sebastian

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 thông qua cuộc gọi .info , bạn sẽ tải CSS trên mỗi trang.
  2. Nếu bạn sao chép chủ đề quản trị viên 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 bạn . Đ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ụ: Drupal Commerce Kickstart Admin theme là một subtheme 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 trường hợp. Xem ví dụ dưới đây:

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 .

11
PWM

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

9
Brian Altenhofel

Thế còn CSS In phun ?

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/, nút/add/, nút/*/chỉnh sửa nên thực hiện thủ thuật).

2
Berdir