¿Cómo puedo determinar desde un módulo o tema si la página actual es una página de resultados de búsqueda de Apache solr?
Si está tratando de determinar a partir de un módulo, puede verificar si la página es la página de resultados de búsqueda a través de los argumentos de ruta utilizando la función arg ().
if (arg(0) == 'search') {
TRUE
}
else {
FALSE
}
Desde un punto de vista temático, simplemente podría usar
<?php if ($search_results) : ?>
<!-- Do this on search results pages -->
<?php endif; ?>
$search_results
solo debe devolver verdadero si está en una página de resultados de búsqueda.
Si está buscando diseñar los resultados en sí, es posible que desee examinar search-result.tpl.php
Para verificar si una página es una página de búsqueda, debe verificar que el primer elemento de la ruta de la URL actual es search
, y el segundo elemento de la ruta es el nombre de un módulo que implementa hook_search()
. (Utilicé una variable temporal y agregué paréntesis adicionales solo para hacer que el código sea más legible).
$bool = ((arg(0) == 'search') &&
($module == arg(1)) && module_invoke($module, 'search', 'name')
);
if ($bool) {
// The page is a search page returned from apachesolr.module.
}
En el caso específico, teniendo en cuenta que desea verificar si una página es una página de resultados devuelta por apachesolr.module, el código se puede simplificar de la siguiente manera:
if ((arg(0) == 'search') && (arg(1) == 'apachesolr')) {
// The page is a search page returned from apachesolr.module.
}
La razón por la que se puede simplificar el código genérico es que conoce el nombre del módulo, y ese módulo seguramente implementa hook_search()
.
El código genérico verifica el valor devuelto por hook_search()
cuando el último parámetro es igual a "name"
Porque hay módulos que implementan hook_search()
solo parcialmente. Al menos eso fue lo que descubrí cuando estaba depurando el código de OpenSearch Feed.
Si está buscando encontrar si se ha buscado solr, puede usar la función apachesolr_has_searched () .
Esto no indicará si está en una página de resultados de búsqueda, ya que una vez que comience a usar vistas solr, la definición de una página de resultados de búsqueda es difusa, pero puede decirle si se ha realizado una búsqueda solr.
Solo como referencia apachesolr_static_response_cache () le dará la respuesta de solrs, y apachesolr_current_query () le dará información sobre la consulta.