Я пытаюсь создать модуль в 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 в модуль.
Ответ 2 · Will Mavis
Лучший способ, который я нашел, - использовать метод JURI::root для создания переменной javascript, которую я затем могу использовать. В вашем php-коде вы должны сделать что-то вроде этого:
?>
<script type="text/javascript">
var joomlaRoot = '<?php echo JURI::root(); ?>';
</script>
<?php
Затем вы можете использовать эту переменную при выполнении вызова AJAX.
Что касается того, куда поместить файл плагина jquery в вашем модуле, вы можете поместить его в любое место в каталоге вашего модуля, а затем снова использовать JURI::root, чтобы создать к нему путь и вызвать метод JDocument::addScript.
Кстати, вы можете рассмотреть возможность использования MooTools. Он поставляется в комплекте с Joomla! уже. Он имеет возможность выполнять вызовы AJAX. Кроме того, используя его, вы избегаете возможности возникновения конфликтов jQuery.
Ответ 3 · Joe
Наконец мне удалось найти хорошее решение для использования Ajax с помощью Jquery в Joomla.
Для этого сначала вам нужно создать представление и модель, чтобы получить требуемый HTML-код через вызов AJAX.
Затем используйте код 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))
}
Обратите внимание на URL-адрес, используемый для вызова ajax. Он использует "tmpl=component", чтобы получить только html для выбранного компонента без HTML-кода joomla.