2009-10-02 7 views
2

Je veux construire le site avec un formulaire de recherche sur la partie GAUCHE et RÉSULTATS dans le contenu (centre).comment créer un formulaire utilisateur Drupal 6 affichant les résultats sur la page?

Je sais comment créer des modules .. mais comment affecter leur emplacement? OU devrais-je placer un FORMULAIRE DE RECHERCHE en tant que BLOC et les affecter à GAUCHE dans build/block /.

FORMAT DE RECHERCHE a 3 zones de texte, aucune n'est requise. "nom", "nom", "âge"

quel que soit le type d'utilisateur Je voudrais afficher un résultat dans la partie CENTRE du modèle.

forment évidemment envoie variable $_POST

mais dans la page de résultats s'il y a plus de 5 résultats que je veux ajouter la pagination.

Comment devrais-je créer des liens pour <a href="?"

Je voudrais avoir cleanURL comme /search//Smith/24 ou search/John//15 ou search/John/Smith/40 pour répondre « nom, prénom, âge » puis lors de l'utilisation en ajoutant la pagination /search/john/smith/40/page/3 ?

+0

Je le veux DUR. quelqu'un peut me donner l'exemple de _MENU() que le soutien de PATH pour /résultats /% que je ne sais pas combien je vais envoyer des paramètres (en fonction de l'entrée utilisateur). donc si c'est 2 paramètres ce sera/search/john/smith si 1 paramètre/recherche/john y a-t-il un caractère universel/N wildcat? Ce menu() sera activé –

+0

Drupal transmettra tous les éléments d'URL supplémentaires en tant que paramètres supplémentaires à votre fonction de rappel 'hook_menu', quel que soit le nombre d'espaces réservés que vous avez spécifié. Utilisez 'func_get_args()' dans votre callback pour les obtenir. –

+0

Pour clarifier le dernier commentaire, si vous n'enregistrez qu'un seul caractère générique ('results /%'), mais que la requête actuelle comporte deux éléments supplémentaires ('request/john/smith/40'), votre callback sera passé 'john' un paramètre explicite, mais aussi 'smith' et '40' en tant que paramètres supplémentaires implicites. –

Répondre

5

Ok, première place, J'ai une deuxième suggestion de googletorps à regarder une solution basée views d'abord, car il peut vous faire économiser un peu de codage personnalisé. Cependant, je me trouve souvent dans une position où une solution basée sur les vues s'avère offrir seulement 80% de ce dont j'ai besoin et ajouter les 20% manquants avec les vues peut être plus de travail qu'une solution personnalisée dès le départ - vérifier les vues avec filtres exposés et voir si cela correspond.

Si elle ne le fait pas, voici quelques conseils qui devraient vous aider à démarrer pour une solution personnalisée:

  • En ce qui concerne le formulaire de recherche, un bloc est la bonne façon de procéder. Jetez un coup d'oeil dans hook_block() pour savoir comment créer un (vous aurez besoin de mettre en œuvre au moins de la liste des opérations et « view » pour cela)
  • Placement se passerait-il par la construction/bloc comme vous avez dit
  • Fonctionnement « Vue ', vous construiriez votre forme. Jetez un oeil dans le forms API Quickstart et reference pour la gestion des formulaires dans Drupal (ne pas créer vos propres formulaires manuellement - l'API de formulaires Drupal a besoin seulement d'un peu de s'habituer et vous fera économiser beaucoup de temps dans le futur)
  • Dans les pages de résultats, vous devez enregistrer votre propre fonction de rappel de page pour les chemins que vous voulez, voir hook_menu() pour cela.
    • Attention: Votre chemin proposé « recherche/... » serait en conflit avec Drupals construire dans le chemin de recherche, de sorte que vous pourriez envisager de choisir une légère variation (par exemple « Recherche/personnes/... » ou « PeopleSearch/» ou similaires)
  • pour la création de liens dans Drupal, utilisez la fonction l()
  • pagination vous pourriez pouvoir utiliser theme_pager, mais cela dépend de la droite de votre requête de recherche réelle se trouve, comme il attend un tableau de paramètres de chaîne de requête pour construire e requête
+1

excellente aide;) merci –

+0

+1 Passer du temps à faire des liens vers des fonctions et être minutieux. – googletorp

1

Vous pouvez le faire comme vous le décrivez. Vous devrez utiliser hook_menu, pour construire les urls, hook_block pour faire le bloc de formulaire de recherche, puis utiliser la fonction l() pour faire les liens. Cependant, faire tout cela dans votre propre module personnalisé nécessiterait beaucoup de temps. Faire les requêtes pour la recherche etc. Au lieu de cela que je vous recommande de faire, serait d'utiliser le module de vues pour tout cela. Avec cela, vous pouvez facilement créer un formulaire de recherche, mais en utilisant des filtres exposés, vous pouvez créer une page et un bloc pour cela, faire la pagination et tout ce qui fait juste quelques clics. Donc, même si vous êtes un bon développeur PHP, la meilleure chose à faire dans ce cas est d'utiliser simplement ce que Drupal fournit sous la forme du module de vues et de le configurer, avec l'IA au lieu d'écrire un tas de code. Si vous décidez de créer votre propre module, jetez un œil à ces fonctions sur le site api.drupal.org, où vous trouverez la documentation du noyau drupal.

+0

puis utilisez la fonction l() pour faire les liens qu'est-ce que l()? –

+0

+1 pour regarder dans les vues d'abord –

+0

@David: l() est une fonction de création Drupal pour créer des liens - voir http://api.drupal.org/api/function/l/6 –

Questions connexes