将jquery插件放在joomla模块中

时间:2010-06-10 11:02:47

标签: php jquery plugins joomla filestructure

我正在尝试在joomla中创建一个模块,它使用一个jquery插件。我在点击模块中的元素时进行ajax操作。目前我正在指定php文件的完整路径。但我知道这是一种错误的方法。

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插件文件放在模块中的哪个位置。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分: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冲突的可能性。

答案 2 :(得分:0)

Atlast我能够找到一个很好的解决方案,在Joomla中使用Jquery来使用Ajax。

首先,您需要创建一个视图和模型,以通过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”来获取所选组件的html而不使用joomla HTML。