2010-02-06 3 views

답변

0

이것은 직접적인 해결책이 아니며 가능한 가장 단순한 솔루션을 원하지 않는다는 이전 답변에 대한 회신에서 볼 수 있지만이 옵션에 대해 언급하고자합니다. Menu Node API module은 Drupal에서 부족한 테이블 인 노드 - 메뉴 관계 테이블을 유지 관리합니다.

이 모듈은 아무런 효과가 없지만이 모듈을 기반으로 모듈을 구성한 것으로 보입니다. 따라서 문제가 얼마나 복잡한 지에 따라 출발점이 될 수 있습니다.

+0

이 작업을 수행하는 직접적인 방법이 있으며이 동일한 페이지의 lmeurs에서 제공합니다. – asiby

3

나는 멍청이니까, 쓰려는 건 쓸데없는 짓이야.

거기에 스마트 모듈이 없으면이를 점검하는 데 필요한 모든 고약한 SQL 쿼리를 수행하지 않는 한 직접 할 수 없다고 생각합니다.

노드 정보는 SQL 테이블 "node"에 저장되며 NID (노드 ID, 노드 ID는 /? q = node/뒤에 나타납니다)로 식별됩니다. 이들의 별칭은 "url_alias"테이블에 저장되며 원본 및 별칭이 지정된 경로를 식별하는 "src"및 "dst"열을 찾을 수 있습니다 (예 : src = 'node/123', dst = 'my/url/alias '). 메뉴 링크는 "menu_links"테이블에서 찾을 수 있습니다. 여기에서 "menu_name"(메뉴의 기계 복사 가능 이름) 및 "link_path"(노드/... 또는 별명) 열을 찾을 수 있습니다.

  1. 그렇지 않으면 떠나, 현재 노드의 NID
  2. 쿼리 노드/NID의 별명이 있다면 "url_alias"과 그것을 검색 할 수 노드 :

    그래서, 당신이해야 할 것입니다 무엇을 다음과 같다/NID

  3. 쿼리 당신이 결정 당신은 다음 또한 무엇을 확인하기 위해 테이블 ​​"menu_custom"를 조회 할 수

"없음"또는 메뉴의 기계 판독 이름을 검색하지 한 경로에 대해 "menu_links"테이블당신이 결정한 메뉴의 사람이 읽을 수있는 이름.

어쨌든, 그것은 복잡한 쿼리 (몇 가지 쿼리?)이고 저는 MySQL을 모르는 사람입니다. 따라서 모든 것을 확인하는 데 사용할 실제 코드를 알려 드릴 수는 없습니다.

+1

쉬운 방법은 단순히 $ 노드 -> 경로에서 살펴보고 menu_links 테이블을 쿼리하는 것입니다. 그래서 하나의 쿼리가 더 스마트하고/더 쉬운 방식으로 구축되기를 바랬습니다. $ 노드 객체가 속한 메뉴에 대한 정보를 보유하지 않는다는 것을 믿을 수 없습니다! :/ –

+0

오, 네 말이 맞아. 나는 오늘 수동 DB 조정을하고 있었고 (Worpress 가져 오기는 정보를 엉망으로 만들었습니다) 그것에 대해서만 생각하고있었습니다 : D. 테이블 "노드"는 정보 라인 NID, VID, 컨텐츠 유형 (페이지, 스토리 ...), 생성 및 최종 수정을위한 타임 스탬프, 작성자의 UID 및 몇 가지를 포함합니다. 슬프게도 메뉴에 대해서는 아무것도 없습니다. 드루팔 (Drupal에서 다른 방향으로 작동합니다 : 그것은 사용자를 노드로 인도하는 메뉴입니다. 다른 방향으로 회전하지 않습니다 ... :( – mingos

-1

http://drupal.org/node/584984

업데이트 : 죄송합니다 사람, 심지어 내가이 링크를 게시했다 몰랐어요. 나는 그것을 초안으로 의도했고 단순히 탭을 닫을 때 그것을 게시했다고 생각한다. 즉, mingos (위)가 맞습니다. 내 링크는 현재 페이지에 대한 활성 메뉴를 포함하는 배열을 제공하는 것으로 보이는 menu_get_active_menu_name() 함수에 대한 링크입니다. 내가 그걸 사용하고 있다고 가정 할 때, 문제를 줄 일 수있는 데이터베이스 호출로부터 자신을 추상화하는 것이 좋은 방법 일 것입니다. 나는 그것을 시도한 적이 없다. 아마 내가 정교하고 게시하지 않은 이유 일 것이다. 글쎄 ... 적어도 목적에 게시하지 않았다. 마지막 이동 경로는 현재 노드를 나타냅니다() 배열과 같은 이동 경로를 반환

$trail  = menu_get_active_trail(); 
$lastInTrail = end($trail); 
$menu_name = $lastInTrail['menu_name']; 

menu_get_active_trail을 :

+0

나는 당신이 참조 페이지의 예제를 참조하고 있다고 가정하지만, "현재 페이지의 활성 메뉴를 가져오고 활성화 된 트레일을 결정합니다"라고하는 함수를 참조합니다. 또한 설명을 위해 게시물을 확장해야합니다 왜 당신이 무언가에 링크하고있는 것입니까? – electblake

+0

부끄러운 소리 ... 이것에 연결하는 것을 기억조차하지 않아야합니다. 초안으로 작성하고 제출해야합니다. 게시물을 편집합니다. –

10

은 어쩌면 이것은 당신이 무엇을 의미입니다.

건배, 로렌스 Meurs, 로테르담

+0

이 솔루션은 작동합니다. 방금 Drupal 7. – asiby

관련 문제