it-swarm-ko.tech

페이지 경로 / 깊이를 기반으로 BODY 태그에 클래스를 동적으로 추가하는 방법은 무엇입니까?

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

-집
-도시
-멜버른 <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 초보자. 따라서 솔루션을 공유 할 때 가능한 자세하게 설명해 주시면 감사하겠습니다.

21
kyooriouskoala

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

이 함수 내에서 페이지의 HTML $vars['classes_array'] 태그에 적용될 클래스 목록을 보유하는 변수 <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> 태그에 추가합니다.

37
sheena_d

template_preprocess_html , html.tpl.php의 전처리 변수

html.tpl.php 참조

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

1
niksmac

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

공통 바디 클래스

이를 지원하기 위해 본문 클래스 Drupal 모듈 을 만들었습니다.

0
RobLoach