2010-06-10 48 views
1

我想在joomla中創建一個模塊,它使用一個jquery插件。我必須在單擊模塊中的某個元素時執行ajax操作。目前我正在指定php文件的完整路徑。但我知道這是一種錯誤的方法。在joomla模塊中放置jquery插件

在jQuery插件的代碼是這樣的。(請注意這裏的jQuery插件文件中指定的路徑第二行)

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

什麼是指定一個jQuery插件路徑的正確方法文件。 另外我需要知道在哪裏把我的jquery插件文件在模塊中。

回答

0

我發現這樣做的最好方法是使用JURI :: root方法創建一個JavaScript變量,然後可以使用它。在你的php代碼中,你可以這樣做:

?> 

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

<?php 

然後你可以在進行AJAX調用時使用該變量。

至於把jquery插件文件放到模塊的哪裏,你可以把它放在模塊目錄下,然後再使用JURI :: root創建一個路徑並調用JDocument::addScript method

在附註中,您可以考慮使用MooTools。它捆綁在Joomla!已經。它有能力進行AJAX調用。另外,通過使用它,可以避免jQuery發生衝突的可能性。

0

Atlast我能找到一個很好的解決方案,以使用的Joomla使用jQuery阿賈克斯。

首先,創建一個視圖和模型,以通過Ajax調用獲取所需的html。

然後使用類似於以下內容的jQuery代碼僅獲取所需視圖的輸出。

//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)) 
} 

請注意用於ajax調用的URL。它使用「tmpl=component」來獲取沒有joomla HTML的選定組件的html。