Je construis un site web de capture d'idées à partir du profil d'installation de Drupal de Array Shift et j'essaye de créer une recherche d'entrée similaire pour quand un utilisateur commence à créer une nouvelle idée. Existe-t-il un moyen de détecter quand l'utilisateur saisit du texte dans le champ de titre du formulaire de création de nouvelles idées (un nouveau type de contenu créé dans cck) puis, en utilisant ajax, de créer une liste déroulante dynamique sont similaires en fonction des requêtes SQL personnalisées que je crée? J'ai vu cela fait dans de nombreux outils COTS tiers pour la capture d'idées, pour ne pas mentionner ici dans Stackoverflow, et j'espère faire la même chose dans Drupal. À l'heure actuelle, la seule façon de penser à cela est de pirater le module cck, ce qui, je le sais, n'est pas une bonne idée, ou de s'y accrocher d'une manière ou d'une autre. Je ne suis pas sûr de savoir comment faire ça. Est-ce que j'utilise hook_form_alter()? J'utilise drupal 6.16 et CCK 6.x-2.7. Merci.Comment se connecter à un champ dans la page de création de contenu dans Drupal?
Répondre
J'ai résolu mon propre problème. Voici ce que je l'ai fait:
- mis en place un drupal.behavior de onchange pour le titre textfield
- fait un appel ajax dans ce gestionnaire de onchange
- connecté l'appel ajax à un chemin qui correspond à une fonction de rappel J'ai créé dans un module personnalisé
- Critique: J'ai dû désactiver puis réactiver ce module personnalisé pour que la fonction de rappel soit appelée (celle définie dans un hook_menu())
- a fait une requête sql dans la fonction de rappel qui a cherché des idées similaires dans le db
- fait imprimer les résultats dans un élément de balisage que j'ai placé juste en dessous du champ de texte du titre. J'ai enveloppé les résultats dans des balises qui pointent vers leurs pages d'idées respectives.
Et voilà, ça fonctionne comme un charme maintenant! J'ai dû rassembler environ 10 tutoriels pour comprendre cela.
Aucune idée si cela est similaire à ce que vous voulez mais vous pouvez avoir un champ CCK avec une entrée libre qui ouvre un champ "déroulant" AJAX généré avec des correspondances possibles. AFAIK ce seul travail avec des noeuds, taxonomie et peut-être d'autres types intégrés Drupal. Aucune possibilité d'utiliser une requête personnalisée.
Si vous avez besoin de créer quelque chose par vous-même, regardez la source de ces champs "freetext" dans la source et adaptez-la à vos besoins et/ou créez un champ CCK personnalisé pour ce type spécial.
Je n'ai pas vraiment besoin de saisie semi-automatique car je ne veux pas que les idées similaires apparaissent dans la zone de texte. Au lieu de cela, je veux qu'il apparaisse sous la zone de texte, juste écho sur l'écran dans son propre conteneur div où l'utilisateur peut cliquer sur des liens d'idées similaires qui ont déjà été postés afin de vérifier que l'idée qu'ils étaient sur le point de publier t déjà répondu, tout comme sur ce site. J'ai besoin d'un moyen de créer un gestionnaire d'événements qui se déclenche chaque fois que l'utilisateur tape quelque chose dans les champs du titre ou du corps. –
Je voudrais prendre le texte qu'ils tapent dans le champ et l'utiliser dans le cadre d'une instruction LIKE pour une requête sql pour me permettre de rechercher plusieurs endroits différents: tags, titres et corps d'autres nœuds, etc. –
Il y a un très beau autocomplete system dans Drupal, mais ce n'est pas très bien documenté si vous voulez sortir complètement des sentiers battus.
J'ai fait bon usage du module Autocomplete Widgets. Vous créez un champ de texte CCK dédié en l'utilisant comme un widget, puis utilisez un fragment PHP pour définir les valeurs autorisées. Les valeurs autorisées sont utilisées pour générer les options de saisie semi-automatique. J'ai simplement laissé tomber un appel de fonction PHP dans la zone de l'extrait de code. La fonction PHP que j'ai définie dans un module personnalisé avec interrogé une base de données distante et retourné les résultats avec drupal_json().
I essayé ce widgets autocomplete et cela n'a pas fonctionné. Je n'ai eu aucun message d'erreur, c'était juste un échec silencieux. J'ai essayé de modifier le formulaire de création d'idée existant avec du code et j'ai essayé de créer un nouveau champ de texte avec cck et la saisie semi-automatique ne fonctionnerait pas sur l'un ou l'autre. Je ne suis pas sûr pourquoi. –
Vous souhaitez utiliser "Saisie semi-automatique pour la liste des valeurs autorisées". Si vous avez besoin de résoudre le problème, je suggère d'aller à la file d'attente des problèmes du projet. – Grayside
L'utilisation de cette option fonctionne. Quand je l'ai essayé la première fois, j'ai essayé l'option de valeurs existantes. Merci. Mais maintenant, comment puis-je obtenir ces travaux autocomplete lier? C'est ce que j'ai vraiment besoin de faire. –
C'est généralement un signe que vous avez un bon matériel sur lequel écrire un tutoriel;) – Grayside
Toute possibilité de partager une partie du code pour accomplir cela? –