페이지 경로 / 깊이를 기반으로 BODY 태그에 클래스를 동적으로 추가하는 방법은 무엇입니까? class=”melbourne theme_parks”> — 레스토랑      

아래 예제와 같이 body 태그에 클래스를 동적으로 추가하는 방법은 무엇입니까?

– 홈

-Cities      

–Melbourne       <body class="melbourne">

— 테마 파크       <body class="melbourne theme_parks">

— 레스토랑       <body class="melbourne restaurants">

– 새로운 뉴욕       <body class="new_york">

— 테마 파크       <body class="new_york theme_parks">

— 레스토랑       <body class="new_york restaurants">

– 문의 소개       <body class="contact_us">

프로그래밍 배경이없는 Drupal 초보자. 따라서 솔루션을 공유 할 때 가능한 한 자세하게 설명해 주시면 감사하겠습니다.



답변

Nikhil Mohan의 답변을 설명 template_preprocess_html()하기 위해 테마의 template.php 파일 안에 구현할 수 있습니다 . 여기에서 진행되는 작업의 기본 사항을 이해하려면 Themable Output 재정 의 문서를 읽으 십시오.

이 함수 내 에서 페이지 $vars['classes_array']의 HTML <body>태그에 적용될 클래스 목록을 보유하는 변수에 액세스 할 수 있습니다 .

불행히도 메뉴에서 현재 페이지의 위치에 대한 정보를 즉시 사용할 수는 없습니다. 당신이 사용할 수있는 menu_get_item()다음 menu_get_ancestors()이 정보를 얻을 수 있지만, 우리는 아마 simpiler 방식으로 얻을 수있는 무언가에 대한 처리 능력이 많이 있습니다.

pathauto 모듈을 사용하여 메뉴 경로를 기반으로 컨텐츠 페이지의 시맨틱 경로를 자동으로 작성한다고 가정하면 (예 : Melbourne Theme Parks 페이지에는 ‘melbourne / theme_parks’경로가 있음) 페이지의 경로를 사용하여 클래스를 작성할 수 있습니다 를 찾고 있습니다:

function THEMENAME_preprocess_html(&$vars) {
  $path = drupal_get_path_alias();
  $aliases = explode('/', $path);

  foreach($aliases as $alias) {
    $vars['classes_array'][] = drupal_clean_css_identifier($alias);
  }
}

그게 다야. Drupal은 현재 페이지의 경로 별칭을보고 경로 별칭의 <body>각 청크에 대한 클래스를 태그에 추가합니다 .


답변

template_preprocess_htmlhtml.tpl.php에 대한 전처리 변수를 사용할 수 있습니다

html.tpl.php 참조

단일 Drupal 페이지의 기본 HTML 구조를 표시하는 기본 테마 구현


답변

다음은 역할 또는 페이지를 기반으로 body 태그에 클래스를 추가하는 모듈입니다.

공통 바디 클래스


답변

이를 지원하기 위해 Body Classes Drupal 모듈 을 만들었습니다 . 더 많은 바디 클래스 통합 지점을 추가하기 위해 문제를 생성하십시오.