2010-02-26 25 views
9

Tôi đang cố gắng thực hiện những điều sau đây. Tôi cần sử dụng Drupal 6 làm yêu cầu dự án, nhưng tôi muốn sử dụng nó với các bảng định kiểu HTML và CSS của riêng tôi cho mỗi nút/khung nhìn/bảng điều khiển, vv. áp dụng cho nội dung HTML của tôi cả bảng định kiểu CSS của tôi và CSS liên quan đến chủ đề được chọn. Tôi cũng đã cố gắng, không thành công, sử dụng mô-đun stylestripper (được cài đặt trong các trang/all/modules). Không có vấn đề gì tôi làm, các bản định kiểu CSS bổ sung được áp dụng cho các trang của tôi, phá hủy hoàn toàn bố cục của tôi.Làm thế nào để loại bỏ các bản định kiểu CSS Drupal?

Cách thích hợp để đạt được điều này là gì? Tại sao stylestripper không hoạt động? Có một chủ đề hoàn toàn trống không? Tôi đã cố gắng cơ bản, bà mẹ, zen vv, nhưng tôi luôn thấy các bảng định kiểu CSS bổ sung được áp dụng cho các trang của tôi.

Điều này khiến tôi phát điên, Drupal được một người khác chọn để linh hoạt. Cảm ơn bạn trước.

Trả lời

6
<?php 
/** 
* Helper function to allow easy CSS excludes + includes 
*/ 
function _phptemplate_get_css($exclude = array(), $include = array()){ 
$css = drupal_add_css(); 
foreach ($css['all']['module'] as $k => $path) { 
    $file = substr($k, strrpos($k, '/') + 1); 
    if (in_array($file, $exclude)){ 
    unset($css['all']['module'][$k]); 
    } 
} 
foreach ($include as $file){ 
    $css['all']['theme'][path_to_theme() .'/'. $file] = true; 
} 
return drupal_get_css($css); 
?> 

Đọc thêm tại drupal.org.

Cập nhật:
Nơi thích hợp để đưa chức năng này, là trong file template.php của chủ đề của bạn. Trên thực tế trong trường hợp của bạn, bạn cần phải vượt qua một loạt các tên tập tin css mà bạn muốn loại trừ.
Cuộc gọi tới drupal_add_css() mà không có đối số nào được thông qua, sẽ cung cấp $css với một loạt tệp CSS sẽ được đính kèm với chủ đề của bạn. Vì vậy, đây là thời điểm thích hợp để tham gia!

Như bạn thấy, Trong vòngđầu tiên, chúng tôi chỉ tìm kiếm mảng $css cho tên tệp đã tồn tại trong mảng $exclude được chuyển, để xóa kiểu. Và chúng tôi làm cùng một công việc trong vòng lặp thứ hai để chèn kiểu. Và vào cuối này, chúng tôi trở lại một đại diện theo chủ đề của tất cả các phong cách cần được gắn liền với chủ đề sử dụng chức năng drupal_get_css(). (có thể không có gì trong trường hợp của bạn)

Vâng, ở đâu để gọi chức năng này? Bạn có thể gọi hàm trợ giúp này trong _phptemplate_variables() cho D5 hoặc YOUR_THEME_preprocess() cho D6. Như chúng ta đã thấy điều này trong hành động cho D6 (chưa được kiểm tra):

function YOUR_THEME_preprocess(&$vars, $hook){ 
    // Stylesheet filenames to be excluded. 
    $css_exclude_list = array(
     'lightbox.css', 
     'lightbox_lite.css', 
    ); 

    // Making use of previously defined helper function. 
    $vars['styles'] = _phptemplate_get_css($css_exclude_list); 
} 

tôi chắc chắn rằng bạn biết làm thế nào để loại trừ 'em tất cả;)

+0

Cảm ơn bạn, điều này có vẻ hoàn hảo. Bạn có thể vui lòng thêm các chi tiết còn thiếu cần thiết để thực sự sử dụng chức năng này không? Trong đó tập tin tôi nên đặt chức năng? Làm thế nào để gọi nó để loại trừ tất cả các stylesheets CSS? –

+0

Bạn được chào đón, tôi sẽ 'cập nhật câu trả lời;) – sepehr

+0

Tuyệt vời! Đây chính xác là những gì tôi đang tìm kiếm! Cảm ơn vì đã chia sẻ! –

0

Tôi không này sẽ làm việc nhưng tôi nghĩ rằng chỉ loại bỏ các dòng sau trong page.tpl.php của chủ đề của bạn

<?php echo $styles ?> 

và sau đó drupal sẽ không phải bất kỳ phong cách riêng của mình ..
này có thể làm việc cho bạn.


Nitz

1

Nếu bạn xác định các file CSS và/hoặc JavaScript trong file .info của chủ đề của bạn sử dụng tên tập tin phù hợp với các tập tin cốt lõi sau đó bạn ghi đè lên chúng, và nếu ghi đè của bạn không tồn tại thì họ không bao gồm .

See the .info file for the Tao theme for an example

+0

Câu trả lời thú vị! – sepehr

Các vấn đề liên quan