2010-07-01 7 views
1

On m'a récemment dit d'utiliser des panneaux pour charger dynamiquement du contenu dans différentes sections avec Drupal. Cependant, je viens de réaliser qu'il ya un moyen facile de le faire, je l'ai ajouté ce code jQuery à tous les éléments du menu:Drupal: chargement de contenu AJAX dans Drupal

$('.menu a').click(function(){ 
    $('#content').load($(this).attr('href') + " #content"); 
    return false; //to avoid refresh 
}); 

De cette façon, je peux facilement mettre à jour anyblock de tout lien sans avoir à utiliser des panneaux.

Cette approche est-elle bonne? Pensez-vous également que les panneaux ne sont pas nécessaires pour charger de manière dynamique le HTML dans les sections du site Web?

grâce

Répondre

2

Panneaux d'utilisation principale, ne se contente pas de chargement sans chargement de la page. Il est principalement utilisé

  • pour créer des mises en page différentes qui dépendent de certains critères, que vous pouvez configurer avec du code ou dans l'IA.
  • Laisser le contenu de la page, être conscient du contenu qui est en cours d'affichage, et lier ensemble à différents contenus.

Votre script actuel fonctionnera, mais il est un peu brut dans sa forme actuelle. Fx, que se passera-t-il si un utilisateur clique plusieurs fois. Si vous souhaitez mettre à jour dynamiquement votre contenu, vous devez uniquement modifier les parties à modifier au lieu de charger/modifier la page entière. Ensuite, vous pourriez tout aussi bien charger la nouvelle page à la place. Je suppose que c'est là que les panneaux peuvent vous aider, mais je n'ai pas essayé d'utiliser des panneaux comme ça.

+0

merci, donc la question est ici: comment puis-je * seulement * charger le contenu du noeud au lieu de la page habituelle? Quel est le lien vers un noeud? (bien sûr sans avoir à utiliser Panels) merci – aneuryzm

+0

@Patrick: ATM, il n'y a pas moyen de charger simplement le contenu d'un nœud, mais il devrait être assez simple de faire un module qui le fait. Ce qui rend cela un peu plus compliqué, c'est que toutes les pages ne sont pas des vues de nœuds. – googletorp

+0

Je pense que j'ai résolu. Je passe un paramètre "onlyNode = true" avec le lien, et j'ai mis à jour mon template afin d'ignorer le contenu de la page si cette variable est vraie. De cette façon, la sélection est faite côté serveur et je ne charge pas toute la page. – aneuryzm