drupal_add_css는 작동하지 않습니다
문제
사용해야합니다 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();
}
설명 :
- Alagna는 테마 이름입니다
- 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);