it-swarm-eu.dev

Jak zjistit, zda je aktuální stránka stránka s výsledky vyhledávání?

Jak mohu zjistit z modulu nebo motivu, pokud je aktuální stránka stránkou výsledků vyhledávání Apache solr?

6
markdorison

Pokud se pokoušíte určit z modulu, můžete pomocí argumentu path pomocí funkce arg () zkontrolovat, zda je stránka výsledkem vyhledávání pomocí argumentů cesty.

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

Z tematického hlediska můžete jednoduše použít

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

$search_results by se mělo vrátit true, pouze pokud jste na stránce s výsledky vyhledávání.

Pokud se díváte na stylizaci výsledků samotných, můžete se podívat do search-result.tpl.php

2
Paul Jones

Chcete-li ověřit, zda je stránka vyhledávací stránkou, měli byste ověřit, že první prvek cesty aktuální adresy URL je search, a druhý prvek cesty je název modulu, který implementuje hook_search(). (Použil jsem dočasnou proměnnou a přidal jsem další závorky, aby byl kód čitelnější.)

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

V konkrétním případě, vzhledem k tomu, že chcete ověřit, zda je stránka výslednou stránkou vrácenou z apachesolr.module, lze kód zjednodušit následujícím způsobem:

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

Důvod, proč lze obecný kód zjednodušit, je ten, že znáte název modulu a tento modul jistě implementuje hook_search().
Obecný kód ověří hodnotu vrácenou hook_search(), když je poslední parametr roven "name", Protože existují moduly, které implementují hook_search() pouze částečně. Alespoň to, co jsem objevil, když jsem ladil kód OpenSearch Feed.

0
kiamlaluno

Pokud chcete zjistit, zda byl hledán solr, můžete použít funkci apachesolr_has_searched () .

To neznamená, že jste na stránce s výsledky vyhledávání, jakmile začnete používat zobrazení solr, definice stránky s výsledky vyhledávání je nejasná, ale může vám sdělit, zda bylo provedeno hledání solr.

Jen pro informaci apachesolr_static_response_cache () vám dá odpověď řešitelů a apachesolr_current_query () vám poskytne informace o dotazu.

0
Jeremy French