Indexer les données de son module dans Search - Version imprimable
+- Forum CMS Made Simple FR (
https://forum.cmsmadesimple.fr)
+-- Forum : Général (
https://forum.cmsmadesimple.fr/forum-3.html)
+--- Forum : Modules, Tags (
https://forum.cmsmadesimple.fr/forum-14.html)
+--- Sujet : Indexer les données de son module dans Search (
/thread-1623.html)
Indexer les données de son module dans Search -
bess - 29/11/2011
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.10.2
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~
Salut tout le monde
Question en espérant que quelqu'un a déjà rencontré et résolu cette problématique (j'y crois de moins en moins)
Comment faire pour que le module Search indexe le contenu lambda de votre module ?
La plupart des réponses se trouve dans
ce topic
La ou je bloque c'est pour résoudre ce cas de figure où un utilisateur vide le cache de Search pour tout réindexer. C'est plutôt pas mal foutu puisque Search analyse les modules qui se sont attachés à lui pour lancer la fonction de réindexage au passage, assurant ainsi la cohésion des indexes..
Seulement ça ne marche pas. J'en ai parlé longuement sur les
forums anglais sans réponses jusque maintenant donc je voulais voir si kkun avais contourné le soucis.
Je reprend mon explication du forum anglais. Lors d'un réindex par Search, il execute ce code
Code :
[== PHP ==]
$modules = ModuleOperations::get_instance()->GetLoadedModules();
foreach( $modules as $key => $object )
{
if (method_exists($object, 'SearchReindex'))
{
$object->SearchReindex($module);
}
}
ce qui a pour effet de tester tous les modules, voir s'ils possèdent une fonction SearchReindex qui leur est propre, et si oui : ils executent cette fonction
Seulement cette portion de code
Code :
ModuleOperations::get_instance()->GetLoadedModules();
ne retournera que les modules chargés en mémoire grâce au LazyMode instauré avec la V1.10.x... et donc pas nos modules
Le code forçant le chargement de tous les modules (et être certain de ne pas en louper) serait plutôt de ce style
Code :
echo "<br/>*start : ";
$modules = ModuleOperations::get_instance()->GetInstalledModules();
foreach( $modules as $name)
{
$object = ModuleOperations::get_instance()->get_module_instance($name);
if (method_exists($object, 'SearchReindex'))
{
$object->SearchReindex($module);
}
}
Voilà. Alors ça m'étonnerait que je sois le premier confronté à ce soucis, du coup j'ai un gros doute sur le fait que ce soit un bug mais plutôt que je suis sur la mauvaise piste...
Des idées ?