Sistema de Búsqueda Inteligente
Búsqueda Básica
Busca en títulos, descripciones, keywords, tags y contenido:
<?php
// Obtener término de búsqueda
$q = $_GET['q'] ?? '';
if (!empty($q)) {
// Buscar en todos los contenidos
$resultados = AntCMSextend::Run()->search($q, '', 20);
if (empty($resultados)) {
echo '<p>No se encontraron resultados para: ' . htmlspecialchars($q) . '</p>';
} else {
echo '<p>Se encontraron ' . count($resultados) . ' resultados</p>';
foreach ($resultados as $resultado) {
echo '<article>';
echo ' <h3><a href="' . $resultado['url'] . '">';
echo $resultado['title'];
echo ' </a></h3>';
echo ' <p>' . AntCMS::short($resultado['description'], 200) . '</p>';
echo ' <small>' . $resultado['date'] . '</small>';
echo '</article>';
}
}
}
?>
Formulario de Búsqueda
<form action="/buscar" method="GET">
<input type="search"
name="q"
placeholder="Buscar..."
value="<?= htmlspecialchars($_GET['q'] ?? '') ?>"
required>
<button type="submit">🔍 Buscar</button>
</form>
Búsqueda en Carpeta Específica
// Buscar solo en blog
$resultados = AntCMSextend::Run()->search($q, 'blog', 20);
// Buscar solo en noticias
$resultados = AntCMSextend::Run()->search($q, 'noticias', 20);
Destacar Término de Búsqueda
<?php
function destacarTermino($texto, $termino) {
$patron = '/(' . preg_quote($termino, '/') . ')/i';
return preg_replace($patron, '<mark>$1</mark>', $texto);
}
foreach ($resultados as $resultado) {
echo destacarTermino($resultado['title'], $q);
}
?>
Búsqueda con Cache
// Cachear resultados de búsqueda por 10 minutos
$cacheKey = 'search_' . md5($q);
$resultados = AntCMSextend::cache($cacheKey, function() use ($q) {
return AntCMSextend::Run()->search($q, '', 50);
}, 600);
💡 Tip: La búsqueda es case-insensitive y busca en múltiples campos
simultáneamente para obtener los mejores resultados.