Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 34 Ответов
  • 3948 Просмотров
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Хотя не совсем верная тема - правильнее наверное  -  не умею запустить модуль из url
пытаюсь сделать модуль из заготовки модуля SP Simple Map  , попытался ее расширить
на сайте настроил модуль таким образом - к url меню привязал пустой content Article а модуль привязал к этому меню .
Технологии точно не понимаю но вывод модуля отображается вместо  Article
то есть вероятнее всего, com_content вызывает мой модуль. картинка обьяснит лучше мое косноязыкое описание
Спойлер
[свернуть]
Все великолепно, но дело дошло до AJAX ,
там все достаточно, как я думал стандартно, но вычитал гдето, что бы не выводить AJAX вызов из под контроля Joomla framework (для безопасности) целесообразно в качестве url указывать ссылку на сам модуль , где вероятно отдельным task обрабатывать AJAX. Конечно верное решение, работает restricted Access и  легче подгрузить что то полезное из Joomla, поскольку ты уже в модуле а не в стороннем файле обработчике аякса.
https://stackoverflow.com/questions/13446333/putting-ajax-in-a-joomla-module
вот тут тоже похожее объяснение
казалось бы все просто - делаю
 url: "/index.php?option=mod_sp_simple_map&task=getCustomerJson"
это мой модуль, который переделываю
и лезу в отладчик что бы посмотреть 
$input=JFactory::getApplication()->input;  -то там в POST передается, ожидая увидеть переменные из url AJAX
а вижу я там переменные com_content article id от 404 ошибки, ну тоесть ответом на AJAX идет 404
ну тоесть /index.php?option=mod_sp_simple_map дает ошибку - полагаю изза настроек модуля через ссылку в меню на Артикль, хотя не уверен.

Извините за сумбурное объяснение, но может подскажете как правильно вызвать из аякса какойто кусок кода из модуля
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #2 : 05.03.2018, 23:34:11 »
Оно?
https://cmscafe.ru/docs/joomla/developer/module-joomla-2-5-joomla-3/616-ajax-funktsionalnost-s-pomoshchyu-ajax-interfejsa-com-ajax
Дмитрий, спасибо, читал всяко про com_ajax, но мне  кажется что для меня это несколько сложнее, поэтому пока боюсь туда лезть. мне кажется я просто чего то недопонимаю в модуле, поскольку поставил и сразу нашел место где писать код)) а как он с Joomla взаимодействует не разобрался. Но если не въеду, то попробую, спасибо
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #3 : 05.03.2018, 23:56:18 »
но мне  кажется что для меня это несколько сложнее, поэтому пока боюсь туда лезть.
там ничего сложного нет

делаете запрос аяксом такой строки (можете банально даже в браузере вставить после адреса вашего сайта)
index.php?option=com_ajax&module=sp_simple_map&format=raw&method=test

В классе файла  hepler.php вашего модуля вставляете метод

static function getTestAjax(){
echo '123';
}

Увидели на экране 123 значит всё ок, и можно делать AJAX запрос по этим переменным, не увидели уже другой разговор..
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #4 : 06.03.2018, 00:14:29 »
там ничего сложного нет

делаете запрос аяксом такой строки (можете банально даже в браузере вставить после адреса вашего сайта)
index.php?option=com_ajax&module=sp_simple_map&format=raw&method=test

В классе файла  hepler.php вашего модуля вставляете метод

static function getTestAjax(){
echo '123';
}

Увидели на экране 123 значит всё ок, и можно делать AJAX запрос по этим переменным, не увидели уже другой разговор..
Супер объяснение)), не увижу - дам знать.спасибо
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #5 : 06.03.2018, 10:06:15 »
helper.php создал, не было
Спойлер
[свернуть]
добавил в XML модуля
Сначало было сообщение модуль неопубликован, поборол с помощью ваших советов добавить itemid меню в url, убрал подчеркивания в названии модуля
?option=com_ajax&module=sp_simple_map&format=debug&method=test&Itemid=449
дает
LogicException: Method testAjax does not exist.

 
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #6 : 06.03.2018, 10:22:42 »
LogicException: Method testAjax does not exist.
 
Наверно с getTestAjax я поспешил, 100 лет не юзал этот функционал ) попробуйте назвать метод просто testAjax.
да, посмотрел сейчас по коду get не нужно просто testAjax
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #7 : 06.03.2018, 12:03:04 »
Да, затарахтел, странно я тоже где-то прочел что нужна приставка  get
Спасибо.
попробую так сделать, хотя конечно не очень понимаю зачем мне  лишняя нахлобучка из com_ajax, и почему Joomla не дает способа обратиться через аjax напрямую
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #8 : 06.03.2018, 13:25:52 »
Код
$.ajax({
type: 'POST',
url: "/modules/mymodule/ajax.php",
target: '',
data: formdata,
cache: false,
success: function(response){
console.log(response);
}
});

И в папке вашего модуля mymodule кидаете файлик AJAX.php (в нижнем регистре конечно, форумная автозамена иногда шутки шутит :)

Код
<?php
// подключим фреймворк движка
define( '_JEXEC', 1 );

header('Content-Type: text/html; charset=utf-8');

if ( file_exists( __DIR__ . '/defines.php' ) ) {
    include_once __DIR__ . '/defines.php';
}
if ( !defined( '_JDEFINES' ) ) {
    define( 'JPATH_BASE', __DIR__ . '/../../' );
    require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';

// получаем данные из formdata и пользуемся всеми плюшками API движка
//$fio = JRequest::getVar( 'name', '', 'post' );
echo 'ответ от сервера, будет показан в консоли браузера';

?>

Не будет нужен отдельный компонент для обработки..

P.S. вечно про это забываю, проверяйте пути до корня сайта от папки где лежит этот файл обработчик и меняйте переходы по дереву каталогов в define( 'JPATH_BASE', __DIR__ . '/../../' );
« Последнее редактирование: 06.03.2018, 14:47:21 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #9 : 06.03.2018, 15:38:46 »
Спасибо, согласен
но вот это в инете не хвалят
define( '_JEXEC', 1 );
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #10 : 06.03.2018, 16:33:16 »
но вот это в инете не хвалят
define( '_JEXEC', 1 );
Что значит не хвалят? Это стандартная заглушка движка от прямого доступа к файлу, можно в принципе и убрать, ничего смертельного не будет в данном случае
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #11 : 06.03.2018, 17:42:34 »
стандартная defined('_JEXEC') or die('Restricted access');

а это позволяет запустить откуда угодно
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #12 : 06.03.2018, 17:55:32 »
стандартная defined('_JEXEC') or die('Restricted access');
а это позволяет запустить откуда угодно

Вы наверно не заметили или не знаете но define и defined это разные функции  ;)
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #13 : 06.03.2018, 18:54:54 »
Вы наверно не заметили или не знаете но define и defined это разные
Дак наоборот, вроде как заметил
во всех джумловских файлах стоит
defined('_JEXEC') or die('Restricted access'); -> 1 или умри -> защита от запуска извне.
а define( '_JEXEC', 1 ); я ставлю в скриптах на свой страх и риск когда нужно поднять джумловский framework.
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #14 : 06.03.2018, 19:02:43 »
Дак наоборот, вроде как заметил
во всех джумловских файлах стоит
defined('_JEXEC') or die('Restricted access'); -> 1 или умри -> защита от запуска извне.
а define( '_JEXEC', 1 ); я ставлю в скриптах на свой страх и риск когда нужно поднять джумловский framework.
Берем index.php  последней версии движка и видим
Код
define('JOOMLA_MINIMUM_PHP', '5.3.10');

Откуда вы берете defined не понятно
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #15 : 06.03.2018, 19:08:44 »
Дак наоборот, вроде как заметил
во всех джумловских файлах стоит
defined('_JEXEC') or die('Restricted access'); -> 1 или умри -> защита от запуска извне.
а define( '_JEXEC', 1 ); я ставлю в скриптах на свой страх и риск когда нужно поднять джумловский framework.
вы не понимаете принципа работы )
define( '_JEXEC', 1 ) это инициализация константы _JEXEC для защиты от прямого доступа, она прямо в index.php http://joxi.ru/V2VLvjgfxjRw0r сайта инициализируется,
а defined('_JEXEC') or die('Restricted access') это проверка или есть эта переменная, без define( '_JEXEC', 1 ) не подключаться файлы cms
ставить в своём файле для инициализации фрейма define( '_JEXEC', 1 ) никак не сказывается на безопасности! Это настолько безопасно как и в index.php этот метод!
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #16 : 06.03.2018, 19:09:48 »
Берем index.php  последней версии движка и видим
Код
define('JOOMLA_MINIMUM_PHP', '5.3.10');
Что то не то вы скопировали ) наверно хотели то что я постом выше в скрине показал то есть это:
Код
/**
 * Constant that is checked in included files to prevent direct access.
 * define() is used in the installation folder rather than "const" to not error for PHP 5.2 and lower
 */
define('_JEXEC', 1);
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #17 : 06.03.2018, 19:10:54 »
Aleks.Denezh откуда он вообще взял функцию defined? В движе ее уже лет сто не видел
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #18 : 06.03.2018, 19:12:52 »
то то не то вы скопировали ) наверно хотели то что я постом выше в скрине показал то есть это:
В архиве Joomla_3.8.5-Stable-Update_Package индекс.пхп имеет в себе

Код
define('JOOMLA_MINIMUM_PHP', '5.3.10');

Файлы типа модулей плагинов да, работают через defined
Код
defined('_JEXEC') or die;
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #19 : 06.03.2018, 19:13:43 »
Aleks.Denezh откуда он вообще взял функцию defined? В движе ее уже лет сто не видел
В смысле не видели?! например administrator/components/com_content/models/article.php вот она: http://joxi.ru/BA00bVWIJEY0pA
версия движка последняя!
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #20 : 06.03.2018, 19:17:02 »
Берем index.php  последней версии движка и видим
Код
define('JOOMLA_MINIMUM_PHP', '5.3.10');

Откуда вы берете defined не понятно

ну это просто для проверки версии php как я думаю
не берусь утверждать что я прав, но
define( '_JEXEC', 1 ); стоит в минимальном  количестве файлов джумловского framework и в index.php , где он собственно объявляется для всех остальных, но там есть дополнительные проверки с тем чтобы не запустить его из шела. все остальные имеют проверку defined or die
ну я так думаю
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #21 : 06.03.2018, 19:17:28 »
В архиве Joomla_3.8.5-Stable-Update_Package индекс.пхп имеет в себе

Код
define('JOOMLA_MINIMUM_PHP', '5.3.10');

Файлы типа модулей плагинов да, работают через defined
Код
defined('_JEXEC') or die;

index.php из архива только что скаченного с офф сайта: http://joxi.ru/5mdYne3ukGgxB2
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #22 : 06.03.2018, 20:53:16 »
Блин виноват ступил, не туда смотрел, конечно же в последних версиях движка
Код
define('_JEXEC', 1);
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #23 : 07.03.2018, 15:26:56 »
Пока тема не остыла, не подскажете 
jquery.ajax дергаю jquery().change(function()
которая стреляет когда меняю чекбоксы или комбобоксы
есть ли способ превентивно в самом начале  дернуть эту эту функцию, хотя чекбоксы еще не поменяны, с тем чтобы она следом запустила AJAX call ?

или оформить $.ajax в виде отдельной JS функции  и запускать ее в самом начале  ?
Спасибо
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #24 : 07.03.2018, 15:35:28 »
или оформить $.ajax в виде отдельной JS функции  и запускать ее в самом начале  ?
Конечно, создайте функцию, в ней пропишите AJAX запрос и вызывайте при действии
пример

Код
function myFunc() {
// тут ваш $.ajax
}
И при изменении чего либо просто вызываем (можно добавить параметры и тд)
Код
$(document).on('keyup change click blur', '.qnt', function(){
    myFunc();
});
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #25 : 07.03.2018, 16:06:59 »
спасибо так и сделал
*

padad

  • Новичок
  • 2
  • 0 / 0
  • https://kapper-ratings.ru/
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #26 : 02.06.2020, 17:43:53 »
А что если  правильно понимаю что method=[custom fragment] по умолчанию становится get, если не указано. если не указано. Пытаюсь сделать AJAX для ресурса
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
*

padad

  • Новичок
  • 2
  • 0 / 0
  • https://kapper-ratings.ru/
Re: Применение ajax (Аякс) в модуле Joomla
« Ответ #28 : 03.06.2020, 09:22:38 »
Значит все делать через функцию?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отправка файлов через ajax в модуль Joomla

Автор hemicide

Ответов: 19
Просмотров: 1053
Последний ответ 11.04.2022, 08:44:33
от sivers
Как сделать AJa загрузку материалов в ст модуле mod_article_category?

Автор Dolphin4ik_1

Ответов: 47
Просмотров: 1174
Последний ответ 03.11.2021, 16:04:25
от NewUsers
Документация по разработки компонента для Joomla 3.x

Автор Aspik

Ответов: 9
Просмотров: 2896
Последний ответ 23.01.2021, 07:55:56
от hmr
ajax проверку на вход. В стандартном модуле входа?

Автор Dolphin4ik_1

Ответов: 4
Просмотров: 468
Последний ответ 23.07.2020, 15:03:57
от sivers
Обработка AJAX в компоненте Joomla!3

Автор balancer

Ответов: 33
Просмотров: 10316
Последний ответ 23.07.2020, 07:45:53
от Dolphin4ik_1