2010-06-10 4 views
1

J'essaye de créer un module dans joomla, qui utilise un plugin jquery. Je dois faire une opération ajax en cliquant sur un élément du module. Actuellement, je spécifie le chemin complet vers le fichier php. Mais je sais que c'est une mauvaise méthode.Placer le plugin jquery dans le module joomla

Le code dans le plugin jquery est comme ça. (S'il vous plaît noter la deuxième ligne où le chemin est spécifié dans le fichier de plugin jquery)

 $.get(
      "/subdirectory/MyBlog/modules/mod_calendar/getCalendar.php", { 
       month: $("#selectedMonth").val(), 
       year: $("#selectedYear").val(), 
       flag: '-1' 
      }, function(data){ 
       $("#monthlyCalendar").html(data); 
       $("#monthlyCalendar").show(); 
      } 
     ); 

Quelle est la bonne méthode pour spécifier le chemin dans un plugin jquery fichier. Aussi j'ai besoin de savoir où placer mon fichier plugin jquery dans le module.

Répondre

0

La meilleure façon de le faire est d'utiliser la méthode JURI :: root pour créer une variable javascript que je peux ensuite utiliser. Dans votre code php, vous feriez quelque chose comme ceci:

?> 

<script type="text/javascript"> 
     var joomlaRoot = '<?php echo JURI::root(); ?>'; 
</script> 

<?php 

Vous pouvez ensuite utiliser cette variable lorsque vous faites votre appel AJAX. En ce qui concerne l'emplacement du fichier plugin jquery dans votre module, vous pouvez le placer où vous voulez dans le répertoire de votre module, puis utiliser à nouveau JURI :: root pour créer un chemin et appeler le JDocument::addScript method. Sur une note de côté, vous pouvez envisager d'utiliser MooTools. Il est livré dans Joomla! déjà. Il a la capacité de faire des appels AJAX. En outre, en l'utilisant, vous évitez la possibilité d'avoir des conflits jQuery.

0

Atlast j'ai pu trouver une bonne solution pour utiliser l'Ajax en utilisant Jquery dans Joomla. Pour cela d'abord, créez une vue et un modèle pour obtenir le code html requis via l'appel Ajax.

Ensuite, utilisez le code jQuery similaire à ce qui suit pour obtenir uniquement la sortie de la vue requise.

//Code to get the base URL of joomla installation 
szURL = document.URL; 
componentList = szURL.split('/'); 
szDocument = componentList[componentList.length-1]; 
szURL = szURL.replace(szDocument, ""); 

//URL to the required component 
url = szURL + "?option=COMPONENT_NAME&view=VIEW_NAME&tmpl=component&uid=" + getRandomValue(); 
jQuery.get(url, function(data) { 
    jQuery("#mydiv").html(data); 
}); 


//Function to get a random number 
//It is used for Ajax calls from IE; Else IE will use the cache values 
function getRandomValue(){ 
    return Math.floor(1000000 * (Math.random() % 1)) 
} 

Notez l'URL utilisée pour l'appel ajax. Il utilise "tmpl=component" pour obtenir uniquement le code HTML du composant sélectionné sans HTML joomla.

Questions connexes