Est-il possible d'appeler le "moteur" de recherche intelligente à partir d'un composant personnalisé, éventuellement avec AJAX?
Notre composant contient une quantité exhaustive de contenu qui doit être recherché dans le composant lui-même, et j'aimerais exploiter les "capacités" de com_Finder sans devoir commencer par la page par défaut de com_Finder.
J'ai essayé CURL et AJAX, mais tout ce que j'ai pu récupérer est la page complète que com_Finder rendrait normalement.
Je suis toujours intéressé par une meilleure réponse car cette solution modifie l'installation de base, mais j'ai ajouté le fichier ci-dessous pour obtenir ce dont j'avais besoin, avec les exemples suivants:
index.php?option=com_Finder&view=search&format=json&q=%22my+searched+phrase%22
index.php?option=com_Finder&view=search&format=json&q=my+keywords+to+find
index.php?option=com_Finder&view=search&format=json&q=my+keywords+to+find&limit=10
composants\com_Finder\views\search\view.json.php
<?php
defined('_JEXEC') or die;
/**
* Search json view class for the Finder package.
*/
class FinderViewSearch extends JViewLegacy
{
public function display($tpl = null)
{
// Get the application
$app = JFactory::getApplication();
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
// Get view data.
$state = $this->get('State');
$query = $this->get('Query');
$results = $this->get('Results');
// Push out the query data.
if (empty($results))
$results = array();
$data['results'] = $results;
$data['explained_html'] = JHtml::_('query.explained', $query);
$data['explained'] = strip_tags($data['explained_html']);
$data['params'] = $state->get('params');
$data['query'] = $this->get('Query');
header('Content-Type: application/json');
$response = new JResponseJson($data, 'Search returned '.count($results).' results' ,false);
echo $response;
$app->close();
}
}