2010-01-27 3 views
0

메뉴 항목에 클래스/ID를 첨부 할 수있는 몇 가지 기능을 보았습니다. 불행히도, 그들 중 누구도 내 유스 케이스에 적용되지 않습니다. 내가 원하는 것은 클래스/ID를 메뉴 항목에 링크 된 항목의 내용 유형에 따라 지정하는 것입니다.Drupal의 콘텐츠 유형에 따라 메뉴 항목에 클래스 연결

예를 들어, 뷰어가 허용 된 IP 범위 (별도 사이트가없는 인트라넷 페이지가있는 내 방식)에있는 경우에만 표시되는 "내부"라는 콘텐츠 유형이 있습니다. 이 링크의 스타일을 다르게 지정하고 싶습니다.

같은 줄에 메뉴의 외부 링크 스타일을 지정하고 싶습니다.

주, 나는 메뉴의 알고 나를 메뉴 항목에 내 자신의 ID의를 할당 할 수 않습니다 모듈 (http://drupal.org/project/menu_attributes)를, 속성,하지만 난 사이트에 100 개 이상의 컨텐츠 편집기를 가지고 뭔가가 자동으로 원하는 . 이와 같은 것은 이상적으로 자동화 된 프로세스가 될 것입니다.

답변

0

구성 디렉토리에 다른 테마를로드 할 수 있습니다. 아마도 IP 범위에 대한 호스트 이름이 필요할 것입니다.

사이트/기본/테마/my_theme
사이트/intranet.tld/테마/my_theme 테마를 연결하는 이상 당신이 필요로하는 HTML/CSS를 작성 상징적으로

당신은 중복을 피하기 것입니다.

은 (당신이 리이나는 A에 원하는 경우에 따라 당신은 theme_menu_item 또는 theme_menu_item_link에 클래스를 추가 할 수 있습니다

+0

... 여러 가지 방법으로 무엇을 할 수 있습니까? 왜 다른 테마를로드하고 싶습니까? 하위 사이트를 설정하는 방법이 아닌 메뉴 기능을 사용자 정의하고자합니다. –

0

단지 많은 방법 중 하나 settings.php

에서 문서를 ...보기). 그런 다음 특정 메뉴 항목의 콘텐츠 유형을 파악하는 방법이 필요합니다. node_load(array('path' => $link['href']))과 같은 것으로 트릭을해야합니다 (테스트되지 않음).

+0

node_load() 사용을 고려해 봤지만 $ node-> type을 얻는 방법을 잘 모릅니다. 경로가 콘텐츠 유형 (Drupal 사이트에있는 경우)을 기반으로한다고 가정하는 방식입니다. 불행히도, 그것은 나를 위해 여기에 해당하지 않습니다. 경로는 콘텐츠 소유자가 결정합니다. 이상적으로, 내가 뭔가를 줄 싶습니다 type; // 기타 return '

  • . $ 링크. $ 메뉴. "
  • \ n"; ?> 노드 객체를 theme_menu_item 함수로 가져 오는 방법을 모르겠습니다. –

    +0

    이전에 테스트되지 않은 코드가 실제로 작동하지 않습니다. 경로는 url_alias 테이블에 저장되므로 노드 ID를 얻기 위해 해당 테이블을 쿼리하고 해당 ID를 사용하여 노드를로드 한 다음 $ node-> type에서 유형을 가져올 수 있습니다. 이것은 여전히 ​​테스트되지 않은 코드이지만 개별 부분은 확실히 작동합니다. $ path = db_fetch_object (db_query ("src src FROM url_alias where dst = '% s'", $ link [ 'href'])); $ path_parts = 폭발 ('/', $ 경로 -> src); $ node = node_load ($ path_parts [1]); –