Làm cách nào để thêm đúng css vào tính năng của tôi?


7

Tôi có một tính năng chỉ chứa một vài lượt xem. Làm cách nào để thêm đúng biểu định kiểu vào nó?

Câu trả lời:


13
  1. Bạn thêm tập tin css vào mô-đun.
  2. Sử dụng drupal_add_cssđể bao gồm tệp css trong .module, điều này có thể được thực hiện hook_initvà sẽ trông giống như thế này:

    module_name_init() {
      if (arg(0) == 'views_path') {
        drupal_add_css(drupal_get_path('module', 'module_name') . '/path_to.css');
      }
    }

Đó cũng là suy nghĩ đầu tiên của tôi, nhưng điều này có nhược điểm là bạn phải thêm mã này mỗi khi nỗi sợ hãi được xuất ra.
BetaRide

5
Đo không phải sự thật. Các tính năng bảo vệ các tệp và mã tùy chỉnh của bạn khi bạn xuất chúng. Ngày nay, tôi thực sự thích viết mã tùy chỉnh có liên quan bên trong các mô-đun tính năng, thậm chí .installđôi khi cập nhật các móc trong tệp.
wizonesolutions

Tôi đã nhận được một màn hình trống với mã ở trên. Điều này làm việc tuy nhiên. Có cách nào sai với cách này không?:module_name_init() { drupal_add_css(drupal_get_path('module', 'module_name') . '/path_to.css'); }
nigel

@nigel Những gì tôi đã đăng là mã ví dụ, bạn cần chỉnh sửa nó để làm cho nó hoạt động. Nếu bạn nhận được một màn hình trống kiểm tra nhật ký máy chủ web của bạn, nó sẽ cho biết vấn đề là gì.
googletorp

Tôi đã sử dụng hook_view_pre numnder () cho dự án gần đây của mình. Một đoạn mã mẫu có ở đây gist.github.com/1675931
Sivaji

3

Nếu bạn chỉ muốn thêm một số thông tin kiểu CSS, hãy thêm nó vào chủ đề của bạn. Tạo một tệp CSS mới, lưu trữ nó trong thư mục chủ đề và thêm nó vào tệp .info của chủ đề.

Nếu bạn cũng cần chỉnh HTML được tạo, hãy cài đặt mô-đun nhà phát triển chủ đề. Khi được kích hoạt, bạn có thể trỏ đến bất kỳ phần nào của trang web Drupal và nó cho bạn biết các chức năng nào đang thực hiện theo chủ đề và cách đặt tên cho chính bạn nếu bạn muốn ghi đè lên chúng.

Đừng quên làm mới tiền mặt của bạn để hiển thị các thay đổi của bạn.


Đây thường là một ý tưởng tốt cho các tệp css, nhưng không hoạt động nếu bạn muốn sử dụng tính chất di động của các mô-đun (cùng một mô-đun có thể được sử dụng trên nhiều trang web).
googletorp

2

Tôi đã sử dụng hook_views_pre_render()trong dự án gần đây của tôi. Một đoạn mã mẫu ở đây https://gist.github.com/1675931

/**
 * Implements hook_views_pre_render().
 */
function example_views_pre_render(&$view) {
  $deals_view = array('deals', 'previous_deals');
  if (in_array($view->name, $deals_view)) {
    drupal_add_js(drupal_get_path('module', 'td_deals') . '/td_deals.js');
    $contextual_module_path = drupal_get_path('module', 'contextual');
    drupal_add_js($contextual_module_path . '/contextual.js');
    drupal_add_css($contextual_module_path . '/contextual.css');
  }
}

1

Như đã đề cập, tính di động là một vấn đề khi thêm nó vào thư mục css của chủ đề. Tôi sẽ đề nghị đặt tệp .css bên trong thư mục mới được tạo (css) ở thư mục gốc của tính năng đã xuất của bạn, sau đó tham chiếu tệp đó trong tệp .info của tính năng của bạn như vậy:

stylesheets[all][] = css/styles.css

Biểu định kiểu của bạn bây giờ sẽ được bao gồm khi mô-đun được bật. Điều tuyệt vời là khi tái tạo tính năng của bạn, phần bổ sung này sẽ được giữ nguyên.


Điều này sẽ chỉ hoạt động cho đến khi bạn cập nhật tính năng, vì tính năng tạo ghi đè các sửa đổi tùy chỉnh được thực hiện trong tệp .info.
Bobík

Bạn đang nhầm, @ Bobík. Tôi chưa gặp vấn đề trong câu hỏi khi tạo lại một tính năng. Tất cả các sửa đổi đối với tệp .info và .module đều được giữ nguyên. Xem tài liệu tính năng
knice

Nhược điểm duy nhất tôi có thể thấy là CSS sẽ được đưa vào mỗi trang. Nếu bạn ổn với điều đó, giải pháp là ok.
donquixote
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.