2010-02-26 1 views
9

다음 작업을 수행하려고합니다. Drupal 6을 프로젝트 요구 사항으로 사용할 필요가 있지만 각 노드/뷰/패널 등에 대해 내 자신의 HTML 및 CSS 스타일 시트와 함께 사용하고 싶습니다.Drupal CSS 스타일 시트를 제거하는 방법은 무엇입니까?

문제는 무엇이든지간에 나는 드루팔 내 HTML 콘텐츠에 CSS 스타일 시트와 선택한 테마와 관련된 CSS가 모두 적용됩니다. 나는 (사이트/전체/모듈에 설치된) 스타일 리퍼 모듈을 사용하여 성공하지 못하고 노력했다. 내가하는 일과 상관없이 추가 CSS 스타일 시트가 내 페이지에 적용되어 내 레이아웃을 완전히 파괴합니다.

이것을 달성하는 적절한 방법은 무엇입니까? 왜 stylestripper가 전혀 작동하지 않는 걸까요? 사용할 수있는 완전히 비어있는 테마가 있습니까? 나는 기본, 모선, 선 (zen) 등을 시도했지만 항상 내 CSS 스타일 시트가 내 페이지에 적용되는 것을 보았다.

이것은 나를 미치게 만들고 Drupal은 유연성을 위해 다른 사람이 선택했습니다. 미리 감사드립니다.

답변

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); 
?> 

자세한 내용은 drupal.org을 참조하십시오.

는 업데이트 :
이 기능을 넣어 적절한 장소, 테마의 template.php 파일에 있습니다. 실제로 당신의 경우에는 제외시키고 자하는 css 파일 이름 배열을 전달해야합니다.
인수가 전달되지 않은 drupal_add_css()을 호출하면 $css에 테마에 첨부 될 CSS 파일 배열이 제공됩니다. 그래서 이것은 들어갈 적절한 때입니다! 보시다시피

는 첫 번째 foreach 루프에서 우리는 단순히 스타일 삭제, 전달 $exclude 배열에 존재하는 파일 이름의 $css 배열을 추구합니다. 스타일 삽입을 위해 두 번째 루프에서 동일한 작업을 수행합니다. 그리고이 마지막에는 drupal_get_css() 기능을 사용하여 테마에 첨부해야하는 모든 스타일의 테마 표현을 반환합니다. (귀하의 경우는 아무 것도 아님)

글쎄,이 함수를 어디에서 호출할까요? D5의 경우 _phptemplate_variables() 또는 D6의 경우 YOUR_THEME_preprocess()에서이 도우미 함수를 호출 할 수 있습니다. 우리가 (안된) D6 에 대한 행동이보다시피 :

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); 
} 

난 당신이 그들을 모두를 제외하는 방법을 알고 있어야 해요)

+0

고맙습니다. 실제로 함수를 사용하는 데 필요한 누락 된 세부 정보를 추가 할 수 있습니까? 어떤 파일에 함수를 넣어야합니까? 모든 CSS 스타일 시트를 제외하기 위해이 코드를 호출하는 방법은 무엇입니까? –

+0

당신은 환영합니다, 나는 대답을 업데이트 할 것입니다;) – sepehr

+0

우수! 이것은 내가 찾고 있었던 바로 그 것이다! 이것을 공유해 주셔서 감사합니다! –

0

나는이 작동하지 않습니다하지만 난 그냥 생각 테마의 page.tpl.php

<?php echo $styles ?> 

에 다음 줄을 제거하고 드루팔 자신의 스타일되지 않은이 ...
이 당신을 위해 작동 할 수 있습니다.


NITZ

1

당신은 당신이 그들을 무시 핵심 파일과 일치 파일 이름을 사용하여 테마의 .INFO 파일에 CSS 및/또는 자바 스크립트 파일을 정의하고 재정의 한 후 존재하지 않는 경우, 포함하지 않는 경우 .

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

+0

흥미로운 답변! – sepehr