Joomla 1.5. Программно включить/выключить модуль
5629 повідомлень
#13 років тому
Как можно в Joomla 1.5 программно включить/выключить модуль ?Можно ли это сделать на JavaScript ?
19 повідомлень
#13 років тому
Если хотите узнать, как включаются/выключаются модули, можете взглянуть на функцию в панели администратора, которая это выполняет. В файле:/administrator/components/com_modules/controller.php
Смотрите класс ModulesController, метод publish().
По сути, задача сводится к изменению параметра публикации ('published'

Естественно, можно сделать и на JavaScript (с помощью AJAX).
5629 повідомлень
#13 років тому
Цитата ("Steadfast"):Естественно, можно сделать и на JavaScript (с помощью AJAX)
Вот здесь интересно. Сейчас я использую для реализации такого функционала Joomla 1.5.25
Любые вставки php в любой javascipt ф-ции выполняются еще во время обновления страницы или
сразу же при переходе по юрл сайта в браузере.
То есть например код
<?php
$dbo =& JFactory::getDBO();
$sql_activate = 'UPDATE #__modules SET published=1 WHERE id=47';
$dbo->setQuery($sql_activate);
$dbo->Query();
?>
выполняется сразу же при переходе по юрл сайта в браузере.
Не смотря на то, что он расположен в ф-ции onsomeobjectmouseover, которая может выполниться только
в результате действий пользователя
То есть сразу же при переходе по юрл сайта в браузере в базе в таблице jos_modules ячейке находящейся в колонке published
и имеющей id = 47 будет присвоено значение 1 :o
19 повідомлень
#13 років тому
PHP-код исполняется на сервере, и лишь затем отправляется в браузер пользователю.Поэтому, как только Вы введёте URL (или обновите страницу), то PHP-код тут же будет выполнен.
С помощью JavaScript Вы можете сделать "скрытый" запрос к серверу, который заставит выполнить обновление БД, не перезагружая страницы.
Вот пример с использованием библиотеки jQuery:
<script type="text/javascript">
$(document).ready(function() {
$("#someblock").mouseover(function() {
$.ajax('http://site/index.php?somekey');
});
});
</script>
И Ваш код на PHP:
<?php
if (isset($_GET)) {
$dbo =& JFactory::getDBO();
$sql_activate = 'UPDATE #__modules SET published=1 WHERE id=47';
$dbo->setQuery($sql_activate);
$dbo->Query();
}
?>
Это, конечно, грубый пример, но суть должна быть понятна.
5629 повідомлень
#13 років тому
Цитата ("Steadfast"):суть должна быть понятна
Суть то мне понятна. При чем давно.
Но на деле у меня при попытке выполнить http://site/ajax.php?somekey
при передаче переменной из index.php выполнение ajax.php почему-то обрывается
при попытке выполнить следующие строки :
JPluginHelper::importPlugin('system');
jimport( 'joomla.application.module.helper' );*/
$mainframe = JFactory::getApplication('site'); //необходим для синхронизации с сессией вызывающего скрипта
$mainframe->initialise();
Я и раньше использовал ajax.php но никогда не обращался к нему из index.php
Одним словом здесь мне до конца не ясно.
Но Вы предложили обратиться к index.php, а не ajax.php
Думаю такое может работать