it-swarm-ko.tech

현재 페이지가 검색 결과 페이지인지 확인하는 방법

현재 페이지가 Apache solr 검색 결과 페이지인지 모듈 또는 테마 내에서 어떻게 확인할 수 있습니까?

6
markdorison

모듈에서 결정하려는 경우 arg () 함수를 사용하여 경로 인수를 통해 페이지가 검색 결과 페이지인지 확인할 수 있습니다.

if (arg(0) == 'search') {
  TRUE
}
else {
  FALSE
}
6
Camsoft

테마 관점에서 간단히 사용할 수 있습니다.

<?php if ($search_results) : ?>
    <!-- Do this on search results pages -->
<?php endif; ?>

$search_results는 검색 결과 페이지에있는 경우에만 true를 반환해야합니다.

결과 자체를 스타일링하려는 경우 search-result.tpl.php

2
Paul Jones

페이지가 검색 페이지인지 확인하려면 현재 URL의 첫 번째 경로 요소가 search이고 두 번째 경로 요소가 hook_search()을 구현하는 모듈의 이름인지 확인해야합니다. (나는 임시 변수를 사용하고 코드를 더 읽기 쉽도록 추가 괄호를 추가했습니다.)

$bool = ((arg(0) == 'search') &&
  ($module == arg(1)) && module_invoke($module, 'search', 'name')
);
if ($bool) {
  // The page is a search page returned from apachesolr.module.
}

특정 경우에, 페이지가 apachesolr.module에서 리턴 된 결과 페이지인지 확인하려는 경우 코드를 다음과 같이 단순화 할 수 있습니다.

if ((arg(0) == 'search') && (arg(1) == 'apachesolr')) {
  // The page is a search page returned from apachesolr.module.
}

일반 코드를 단순화 할 수있는 이유는 모듈의 이름을 알고 모듈이 반드시 hook_search()을 구현하기 때문입니다.
일반 코드는 hook_search()을 (를) 부분적으로 만 구현하는 모듈이 있기 때문에 마지막 매개 변수가 "name" 인 경우 hook_search()에 의해 반환 된 값을 확인합니다. 적어도 OpenSearch Feed 코드를 디버깅 할 때 발견 한 것.

0
kiamlaluno

Solr이 검색되었는지 확인하려면 apachesolr_has_searched () 함수를 사용할 수 있습니다.

Solr보기를 사용하기 시작하면 검색 결과 페이지의 정의가 희미하지만 solr 검색이 수행되었는지 여부를 알 수 있으므로 검색 결과 페이지에 있는지 여부는 표시되지 않습니다.

참고로 apachesolr_static_response_cache () 는 solrs의 응답을 제공하고 apachesolr_current_query () 는 쿼리에 대한 정보를 제공합니다.

0
Jeremy French