it-swarm-es.com

¿Cómo determinar si la página actual es una página de resultados de búsqueda?

¿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?

6
markdorison

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
}
6
Camsoft

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

2
Paul Jones

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.

0
kiamlaluno

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.

0
Jeremy French