2009-06-08 9 views
0

Je travaille sur un flux RSS où la recherche en texte intégral doit être proposée - vous faites une recherche dans une boîte, et obtenez le résultat en RSS. J'ai essayé de faire fonctionner node_search et do_search mais il me manque quelque chose ... mais quoi? Autant que je sache, quelque chose comme $ find = node_search ('search', 'type: article'); devrait me donner un résultat contenant tous les nœuds correspondants où le type = 'article'. Mais comment puis-je spécifier le mot-clé/terme de recherche?Drupal node_seach

Qu'est-ce qui me manque?

+1

Utilisez-vous D5 ou D6? –

+0

c'est drupal 5 –

Répondre

0

Le OpenSearch module expose les résultats de recherche au format RSS, pas besoin de le coder vous-même.

Si vous voulez un formulaire spécialisé, vous pouvez simplement rediriger vers le résultat OpenSearch après avoir traité votre formulaire.

Addendum: Si vous voulez vraiment ne faire vos propres, vous pouvez utiliser search_data comme ceci:

<?php 
$data = search_data('your searchterms here'); 

Cette recherche noeuds (comme second paramètre par défaut pour search_data), mais peut également être utilisé pour rechercher des utilisateurs et d'autres choses qui ont implémenté hook_search.

En outre, search_data, en ne détenant pas le nom, renvoie réellement les résultats de recherche formatés. Si vous voulez avoir les résultats bruts de la recherche, vous pouvez directementou autres hook_searchdo_search. Exemples:

<?php 
$results = module_invoke('node', 'search', 'your searchterms here'); 
$data = do_search($query, 'node'); 

La différence étant que l'invocation du crochet vous donne beaucoup plus de données associées à un noeud (car il passe par le code de recherche spécifique nœud, effectue en plus du do_search générique (hook_search de node.module mise en œuvre appelle do_search pour que le travail soit fait)) et une recherche peut-être plus précise, puisque la recherche de nœud respecte les poids que vous avez pu définir dans les paramètres de recherche. Le compromis est une requête de recherche plus lente.

+1

merci, mais je dois le coder, j'ai besoin de cela dans le cadre d'un module existant, tout ce que j'ai besoin de savoir est, comment puis-je spécifier le terme de recherche réel? –

+0

D'accord, j'ai modifié ma réponse (puisque le formatage n'est pas autorisé dans les commentaires) avec quelques détails sur l'accès direct aux données de recherche :) – mikl

0

Il devrait être jsut clé: valeur que vous pouvez utiliser - et "" aussi.

hook_search

Phil

+0

Oui, je comprends, mais quelle est la clé pour le terme de recherche? –

+0

sa «clé»! La documentation et les conventions de nommage inutilisées sont plutôt mauvaises pour Drupal en règle générale, la recherche se classe assez haut sur la très mauvaise échelle de la documentation. –