문제

사용해야합니다 drupal_add_css 스타일 시트를 단일 드 루팔 6 페이지로 호출하려면. 완전히 새로운 스타일이 필요한 개별 페이지 세트가 있기 때문에 메인 테마 스타일 시트를 편집하고 싶지 않습니다. 메인 시트는 모든 것을 넣으면 방대합니다.

내 솔루션은 PHP 편집기 모드에서 페이지를 편집하고 다음을 수행하는 것이 었습니다.

<?php 
drupal_add_css("/styles/file1.css", "theme");
?>

<div id="newPageContent">stuff here in html</div>

그러나 소스를 볼 때 아무것도 없습니다! CSS 링크가 깨진 링크도 아니고 CSS 시트를 페이지 헤드에 넣은 CSS 패키지에 추가하는 것을 거부하는 것입니다.

변형은 작동하지 않는 것 같습니다.

drupal_add_css($path = '/styles/file1.css', $type = 'module', $media = 'all', $preprocess = TRUE)

내 템플릿 헤더는 다음과 같습니다. 사용자 정의 JavaScript를 추가하는 것 외에 다른 기본에서 아무것도 변경하지 않았습니다.

<head>
    <?php print $head ?>
    <title><?php print $head_title ?></title>
    <?php print $styles ?>
    <?php print $scripts ?>
    <script type="text/javascript" src="<?php print base_path() ?>misc/askme.js"></script>    
    <!--[if lt IE 7]>
      <?php print phptemplate_get_ie_styles(); ?>
    <![endif]-->
</head>

이 기능이 작동하지 않는 이유는 무엇입니까?

도움이 되었습니까?

해결책 5

대답은 사용하는 것이 매우 많았습니다 CSS 인젝터 모듈 - 훌륭한 작은 애드온!

다음은 프로젝트 페이지에서 발췌 한 내용입니다.

관리자가 구성 가능한 규칙에 따라 페이지 출력에 CSS를 주입 할 수 있습니다. 사이트의 공식 테마를 수정하지 않고 간단한 CSS 조정을 추가하는 데 유용합니다. CSS는 Drupal의 표준 drupal_add_css () 함수 및 Page 캐싱 등을 사용하여 추가됩니다. ).

다른 팁

예제에서 가지고있는 템플릿을 어디에서 선택하는지는 확실하지 않습니다. 모듈에서 선택하는 경우 템플릿이 아닌 모듈에서 drupal_add_css 만 사용할 수 있습니다.

자신의 테마가 있으면 사용할 수 있습니다 Template_preprocess_page 관련 CSS를 추가하기 위해 논리를 넣습니다 (사용할 템플릿을 선택할 수도 있습니다).

나는 이상한 것을 발견했고 그것은 당신의 문제를 해결할 수 있습니다.

drupal_add_css( drupal_get_path('theme','themname') . '/working.css','module' ,'all' , false );

drupal_add_css( drupal_get_path('theme','themname') . '/path/to/folder/notworking.css','module' ,'all' , false );

첫 번째는 메인 폴더의 스타일을 eBcause로 작동합니다. 스타일이 하위 폴더에 있기 때문에 두 번째 줄은 작동하지 않습니다!

편집하다:

스타일 파일을 올바르게 쓰지 않았기 때문에 작동하지 않았다고 생각합니다. S 대답을 무시하십시오.

drupal_add_css( drupal_get_path('theme','test') . '/pages/subpage/style.css','theme');

일하고 있습니다

이 기능은 템플릿에서 작동하지 않습니다. 그 이유는이 시점에서 모든 스타일 HTML을 보유 할 변수 $ 스타일이 이미 생성되었으므로 Drupal_ADD_CSS가 추가로 작동하지 않기 때문입니다. 테마 에서이 작업을 수행하려면 CSS 파일을 수동으로 추가해야 할 것입니다.

<link rel="stylesheet" ... />

다른 방법은 모듈에서 drupal_add_css를 사용하는 것이지만 원하는 페이지에 올바른 CSS 파일을 추가하는 데 어려움이있을 수 있습니다.

template.php 파일 내에서 drupal_add_css ()를 사용할 수 있습니다. 이 페이지 그 일을하는 방법에 대한 좋은 예가 있습니다.

템플릿 내부 의이 코드는 나에게 작동합니다.

function alagna_preprocess_page(&$vars) {
        drupal_add_css(path_to_theme() . '/header_1.css', 'theme');
        $vars['css'] = drupal_add_css();
        $vars['styles'] = drupal_get_css();
} 

설명 :

  1. Alagna는 테마 이름입니다
  2. header_1.css는 필요한 CSS 파일입니다.

drupal_add_css는 기본 경로에 대한 경로를 기대하는 반면 drupal_get_path는 기본 경로에 대한 경로를 반환하지 않습니다.

global $base_path;
drupal_add_css($base_path . drupal_get_path('module / theme','name') . "/styles/file1.css", "module / theme");

그에 따라 모듈과 테마 중에서 선택할 수 있습니다.

링크에 감사드립니다, wyrmmage. 그것은 매우 유용합니다. 페이지의 나머지 코드는 불필요하다고 생각합니다. Drupal 6이 이미 파일 존재를 자동으로 확인하기 때문에 다음과 같습니다.

drupal_add_css(path_to_theme() . '/css/yourcss.css', 'theme');
// Add the following to regenerate $styles. 
// This is needed for template_preprocess_page() since css is already generated at this point.
$variables['styles'] = drupal_get_css(); 

이 시도common.inc drupal_get_css ($ css = null)

매개 변수

$ CSS : (선택 사항) CSS 파일 배열. 배열이 제공되지 않으면 기본 스타일 시트 배열이 대신 사용됩니다.

    $css    =   $vars['css'];
// unset the system css files
$unset_css = array
    'modules/system/system.css',
    'modules/system/system-menus.css',
);

foreach($unset_css as $css_f) {
    if(isset($css['all']['module'][$css_f])) {
        unset($css['all']['module'][$css_f]);
    }
}

// add css
$css['all']['theme'][drupal_get_path('theme', 'openpublish_theme') . '/css/style.css'] = true;
$vars['styles'] = drupal_get_css($css);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top