일부 관리자 테마 CSS 규칙을 재정의하는 방법은 무엇입니까? [닫은]


20

관리 테마 자체를 건드리지 않고 (일부 테마 함수 또는 모듈 후크를 통해) 관리 테마가 사용하는 일부 CSS 규칙을 대체하는 방법이 있습니까? 예를 들어 text-align: right관리자 형식 (및 편집 노드)의 모든 정수 필드에 a를 추가하고 싶습니다 .


5
닫아서는 안되는 완전히 유효한 질문입니다. 새로운 하위 테마를 만드는 것이 과도 할 수있는 관리자 테마 (일반적으로 7 개)를 조정해야하는 경우가 종종 있습니다.
Kari Kääriäinen

답변:


15

나는 그것을 사용하여 그것을했다 :

function mymodule_preprocess_html(&$variables) {

  global $theme;

  if ($theme === variable_get('admin_theme', 'seven')) {

    // Reference your custom stylesheet.
    drupal_add_css(drupal_get_path('module', 'mymodule') . '/css/mymodule.css', array('weight' => CSS_THEME));
  }
}

그것은 좀 더 읽기 쉽습니다.


1
나에게도 완벽하게 일했습니다. 깨끗한 용액.
Sasha Grievus 2016 년

이 편리한 코드의 drupal 8 버전이 있습니까?
petergus 2012 년

11

이를 수행하는 방법에는 여러 가지가 있지만 웹 사이트의 성능에 영향을 미치는 측면에서 모든 접근 방식이 동일한 것은 아닙니다. 예를 들면 다음과 같습니다.

  1. 관리 테마를 복사하거나 관리 테마를 기반으로 서브 테마를 작성하는 경우 (이는 이미 샤이 트를 기반으로하는 서브 테마가 있으므로 Drupal Commerce에서 작동하지 않음)- .info를 통해 CSS 파일추가하십시오. call , 모든 페이지에 CSS를로드합니다.
  2. 관리자 테마를 복사하거나 관리자 테마를 기반으로 하위 테마를 작성하는 경우 template.php 파일에 drupal_add_css () 후크를 사용할있습니다 . 이를 통해 특정 페이지 (예 : 특정 브라우저 또는 특정 브라우저)에서 조건부로 스타일 시트를 호출 할 수 있습니다. 이것은 잘 작동하지만 이미 필요한 것보다 많은 파일을 호출하고 있습니다.
  3. 자신의 모듈을 만들고 drupal_add_css ()호출 하십시오. 내가 아는 한, 이것은 원본을 건드리지 않고 관리자 테마를 변경하는 '가장 가벼운'방법이며 관리자 테마가 이미 하위 테마 인 경우 작동합니다 (예 : Drupal Commerce Kickstart 관리자 테마는 Shiny의 하위 테마). 이 방법은 모든 상황에서 작동하기 때문에 사용합니다. 예를 들어 아래를 참조하십시오.

'mymodule'이라는 디렉토리를 만들고 (원하는 이름을 사용하여)이 파일을 만든 다음 sites / all / modules / custom 디렉토리에 넣으십시오. 아래 코드에 주석을 추가하여 진행 상황을 확인할 수 있습니다.

  • mymodule.info
  • mymodule.module
  • css / mymodule.css

mymodule.info는 다음을 포함합니다 :

name = mymodule
description = Custom alterations for admin pages on my website
core = 7.x

mymodule.module에는 다음이 포함됩니다.

function mymodule_preprocess_html(&$variables) {
  // Add conditional stylesheets for admin pages on admin theme.
  if (arg(0) === "admin") {
    // Reference your current admin theme.
    $theme_path = drupal_get_path('theme', 'commerce_kickstart_admin');
    // Reference your own stylesheet.
    drupal_add_css(drupal_get_path('module', 'mymodule') . '/css/mymodule.css', array('weight' => CSS_THEME));
  }
}

그러면 css / mymodule.css에 관리자 테마에 추가 된 스타일이 있습니다. 캐시를 비우고이 모듈을 활성화하면 경쟁에서 벗어날 수 있습니다! drupal_add_css에 대해 자세히 알아보십시오 .


2
$theme_path현재 모듈 경로를 사용하는 경우 변수 가 필요 CSS_THEME하지 않으며 무게가 아니라 그룹입니다.array('group' => CSS_THEME)
MrUpsidown

이 편리한 코드의 drupal 8 버전이 있습니까?
petergus 2012 년

9

내가하는 일은 .info, 고유 CSS 파일 (일반적으로 이름이 지정된 overrides.css) 및 template.php필요한 경우 파일 만 사용하는 관리자 테마에 대한 하위 테마를 만드는 것입니다 .


2

무엇에 대한 CSS 인젝터 ?

테마 종속 구성 규칙을 허용하는지 모르겠지만 경로를 기반으로 규칙을 허용한다고 가정합니다 (따라서 admin / , node / add / , node / * / edit가 트릭을 수행해야 함).


좋은 생각. 그것을 시도했지만 작동하지 않는 것 같습니다 (CSS 규칙은 실제로 저장되지 않았습니다!). 또한 오버레이 시스템과 함께 작동 할 것이라는 의문이 있습니다 (문제는 file_unmanaged_save_data ()에 아무것도 저장하지 않고 있지만 내 설정은 다소 이상합니다-OSX vbox 내부의 우분투 상자).
Claudio

흠. 현재 버전의 버그 또는 이와 비슷한 것일 수 있습니다. 오버레이 내부의 이론에서 작동해야한다고 생각합니다. 또한 다른 테마로 오버레이를 표시 할 수 있습니다. 간단한 맞춤 모듈 에서이 작업을 수행 할 수 있습니다 .CSS를 파일에 저장하고 hook_init ()를 구현하고 일부 조건이 적용되는 경우 drupal_add_css ()를 사용하십시오.
Berdir
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.