2009-10-19 6 views
4

J'ai une demande concernant Drupal 6.x Je voudrais avoir ce comportement:Drupal via AJAX considère l'argument

imaginer avoir 2 colonnes, sur la gauche une liste de nœuds (par exemple uniquement les titres) et à droite une vue montrant juste un des contenus sur la gauche. Mon idée serait de réaliser ceci avec un AJAX-mode: cliquer sur un lien dans la liste sur la gauche met à jour la vue sur la droite avec le nœud réel.

Quelle est la meilleure façon de gérer cela? Mon idée est d'utiliser des panneaux, de faire 2 panneaux de colonnes avec 2 vues, une (gauche) filtrée sur le type de contenu, sans arguments, et une sur la droite qui prend en argument l'identifiant du nœud à afficher.

Mais comment lier les 2 vues avec AJAX? (ou, mieux, comment mettre à jour la vue sur la droite avec un appel AJAX?) est-ce possible?

Toute aide ou idée est vraiment la bienvenue Merci!

Vive Mauro

Répondre

2

cela est certainement possible, et pas très difficile à faire.

Votre tâche peut être divisée en deux parties principales:

  1. Fournir une URL « de rappel » dans le backend qui prend un identifiant de noeud (JNV) et retourne le balisage pour afficher le nœud dans le panneau de droite dans un format qui peut être traité par javascript. Cela sera fait en PHP dans un module Drupal normal. Le point principal n'est pas de retourner une page Drupal complète comme d'habitude, mais seulement le balisage pour le noeud.
  2. Créez une logique pour le Frontend qui, lorsqu'il est déclenché en cliquant sur un lien dans le panneau de gauche, récupère le nouveau balisage de nœud via le rappel d'URL ci-dessus et remplace le contenu du panneau droit par celui-ci. Cela doit être fait en javascript, en utilisant l'API javascript Drupal avec jQuery.

Vous pouvez trouver un introduction and example for AJAX in Drupal here. (Cela ne presque exactement ce que vous voulez faire, que des images)

Vous devriez aussi regarder cela plus general entry point for JavaScript in Drupal.

3

Vous pouvez également faire un hack rapide, ce qui est assez flexible, car il vous permet de changer vos vues sans changer de code.

J'ai eu une tâche similaire récemment et pour votre tâche que je ferais ce qui suit:

  1. pour votre colonne de droite, créez un filtre exposé (identifiant de nœud) et se cacher sous forme de filtre tout exposé en utilisant CSS.
  2. En utilisant jQuery, associez un comportement de clic aux titres de votre colonne de gauche.
  3. Le comportement de clic prend l'identifiant de noeud, trouve le filtre exposé attaché à la colonne de droite, introduit l'identifiant de noeud dans le champ de saisie et exécute le format .submit(). Le .submit() déclenche la requête ajax de debugged build-into-views qui rafraîchit votre colonne de droite.
+0

C'est exactement ce que j'ai fait. Travail! –

Questions connexes