2011-12-12 2 views
2

현재 "node_search_execute"에 전달 된 옵션 목록에 "현재 언어"를 강제 적용하려고합니다. 불행히도 함수 갈고리를 넣을 수있는 적절한 장소를 찾는 데 어려움을 겪고 있습니다. 아마도 나는 간단한 것을 놓치고 있습니다.검색 결과에 언어 필터를 강제 적용하려면 hook_search_info 및 _execute를 구현해야하는 위치는 무엇입니까?

저는 이것이 어떻게 구현되어야하는지 두 가지 기본적인 가능성을 가지고 있습니다.

(1)hook_search_info이 경우

hook_search_execute, 나는 node_search_execute에서 코드를 복사하여 검색 쿼리에 "언어 = '$의 current_language을'AND '추가하는 그것에 줄을 추가 거라고 구현 .

내 테마 폴더에 mythemename_search_infomythemename_search_execute 기능을 추가하려고 시도했지만 실행되지 않습니다. 실행할 때. 이 예에서

function mythemename_search_info() { 
    return array(
     'title' => 'Content', 
     'path' => 'node', 
     'conditions_callback' => 'mythemename_search_execute', 
    ); 
} 

function mythemename_search_execute($keys = NULL, $conditions = NULL){ 
    return array(); 
} 

- 난 그냥 "어떤 결과가"내가 오버라이드가 나는 전체 검색 기능을 구현하는 것, 실행중인 확신 할 수 없었다 얻을 수 있도록 노력하겠습니다 것입니다.

(2) 나는 또한 mythemename_search_preprocess()

function mythemename_search_preprocess($text) { 
    // Do processing on $text 
    echo $text; die(); 
    $text = "french"; 
    return $text; 
} 

을 시도하지만 다시, 나는 (그것을 텍스트의 비트와 함께 흰색 페이지) 예상 결과를 얻을 수없는 hook_search_preprocess()

구현

내가하고있는대로,이 검색 후크는 감지되지 않습니다.

무엇이 누락 되었습니까? 아마도 그들은 모듈에 있어야합니까?

답변

3

예 모듈에 있어야합니다. 대부분의 후크는 모듈이 아니라 테마 만 호출됩니다. 이것에 대한 가장 주목할만한 예외는 theme/preprocess hook인데 둘 다 호출됩니다.

사용자 정의 모듈을 작성하기 전에 작성하지 않은 경우, here의 귀중한 안내서가 있습니다.

1

내 맞춤 모듈에 hook_search_info(), hook_search_execute()hook_search_access()을 사용했습니다. "hook"을 모듈 이름으로 바 꾸었습니다. 나는 '제목'이 hook_search_info() 인 탭을 만들 수있었습니다. 그리고 그 결과 배열을 hook_search_execute에 전달했습니다. 이 결과는 검색 페이지의 탭 아래에 표시되기 시작했습니다. 따라서 새로운 모듈을 만드는 것은 새로운 검색 탭을 포함시키는 데 도움이 될 것입니다.

관련 문제