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

sasha8888

  • Осваиваюсь на форуме
  • 46
  • 4 / 0
Когда-то реализовал, недавно вспомнил и решил поделиться.
Делаем следующий дополнительный файл в шаблоне, например module.php
закидываем в него код
Код
<?php defined( '_JEXEC' ) or die( 'Restricted access' );?>
<jdoc:include type="modules" name="<?php echo JRequest::getVar('position','left')?>" />
можно добавить своих параметров, например, добавить еще стиль
Код
<?php defined( '_JEXEC' ) or die( 'Restricted access' );?>
<jdoc:include type="modules" name="<?php echo JRequest::getVar('position','left')?>"  style="<?php echo JRequest::getVar('modstyle','none')?>"/>
и потом можем обращаться к модулю по адресу http://site.com/?tmpl=module&position=left&modstyle=xhtml
это позволяет модули на любом другом сайте и любом другом движке, например, через простую функцию
Код
echo file_get_contents('http://site.com/?tmpl=module&position=left&modstyle=xhtml');
, можно через JS организовать lazyload модулей на сайте через js+ajax, или уже как душа пожелает можно еще извращаться)
код успешно работает даже на Joomla 1.5
P.S. уважаемые модераторы, если разместил тему не в той ветке, то прошу перенести куда надо, спасибо
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: AJAX подгрузка любого модуля
« Ответ #1 : 31.05.2014, 22:25:57 »
таким же образом можно и компонент подгружать:
Код: php
<?php defined( '_JEXEC' ) or die( 'Restricted access' );?>
<jdoc:include type="component" />
интернет-блог: http://websiteprog.ru
*

sasha8888

  • Осваиваюсь на форуме
  • 46
  • 4 / 0
Re: AJAX подгрузка любого модуля
« Ответ #2 : 03.06.2014, 19:16:19 »
с компонентом и так понятно - есть часто даже шаблон component.php с несколько большим кодом, чем Ваш, этому решению уже пару лет будет, если я такое применял еще в 1.5) с модулями интереснее, т.к. часто под них берут более сложную обвязку, чем в этом решении.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: AJAX подгрузка любого модуля
« Ответ #3 : 03.06.2014, 20:32:04 »
А с модулями что непонятно ? Все то же самое только позиция задается и обертка для стилизации
интернет-блог: http://websiteprog.ru
*

sasha8888

  • Осваиваюсь на форуме
  • 46
  • 4 / 0
Re: AJAX подгрузка любого модуля
« Ответ #4 : 04.06.2014, 10:36:48 »
Вы сами-то видели как порой извращаются разработчики с AJAX подгрузкой модуля, когда есть доступ к шаблону?)
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: AJAX подгрузка любого модуля
« Ответ #5 : 04.06.2014, 10:50:15 »
У этого способа большой недостаток - нагрузка на систему!
Так как при загрузке через ?tmpl=module будет проходят все этапы инициализации, и все запросы в базу, все инициализации что и в стандартном шаблоне!
Лучший вариант - написать системный плагин который будет на onAfterInitialise отдавать модуль!
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: AJAX подгрузка любого модуля
« Ответ #6 : 04.06.2014, 11:24:32 »
У этого способа большой недостаток - нагрузка на систему!
Так как при загрузке через ?tmpl=module будет проходят все этапы инициализации, и все запросы в базу, все инициализации что и в стандартном шаблоне!
Лучший вариант - написать системный плагин который будет на onAfterInitialise отдавать модуль!

Хмм, да об этом я даже не думал, а $app->initialise() не много подгружает? Хотя, посмотрел вроде немного, конфиги, языки..А может быть можно еще каким нибудь хелпером модуль подгрузить? 
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: AJAX подгрузка любого модуля
« Ответ #7 : 04.06.2014, 11:39:51 »
Я вот тут почитал все вышеизложенное, подумал, и решил поизучать/поэксперементировать с аяксом. Доку/примеры сайтов/шаблонов на аяксе на J3 подскажите, где почитать/посмотреть?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: AJAX подгрузка любого модуля
« Ответ #8 : 04.06.2014, 11:45:43 »
Я вот тут почитал все вышеизложенное, подумал, и решил поизучать/поэксперементировать с аяксом. Доку/примеры сайтов/шаблонов на аяксе на J3 подскажите, где почитать/посмотреть?
А че там эксперементировать? Все просто как двери...
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: AJAX подгрузка любого модуля
« Ответ #9 : 04.06.2014, 11:46:21 »
Хмм, да об этом я даже не думал, а $app->initialise() не много подгружает? Хотя, посмотрел вроде немного, конфиги, языки..А может быть можно еще каким нибудь хелпером модуль подгрузить? 
Каким именно хелпером?
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: AJAX подгрузка любого модуля
« Ответ #10 : 04.06.2014, 11:48:47 »
А че там эксперементировать? Все просто как двери...
Ага, как на велике ездить, когда вес 150... Юморист Вы однако, батенька :) Просто для знающего/умеющего, чего о себе пока сказать не могу.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: AJAX подгрузка любого модуля
« Ответ #11 : 04.06.2014, 11:53:29 »
Ага, как на велике ездить, когда вес 150... Юморист Вы однако, батенька :) Просто для знающего/умеющего, чего о себе пока сказать не могу.
Ну так почитайте в сети про технологию AJAX  ;) Как вариант в Joomla: AJAX в Joomla или AJAX в Joomla 3.2
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: AJAX подгрузка любого модуля
« Ответ #12 : 04.06.2014, 11:55:45 »
Ага, как на велике ездить, когда вес 150... Юморист Вы однако, батенька :) Просто для знающего/умеющего, чего о себе пока сказать не могу.
Да уже сто раз тут на форуме обсуждалось! Что бы юзать AJAX есть несколько способов:
1. Шаблон (как у автора топика)
2. Системный плагин (все банально):
public function onAfterInitialise ( ){
   $input = JFactory::getApplication()->input;
   if($input->getCmd('task') === 'getAjaxMyData'){
      echo '123';
      ....         
      exit; // Обязательно что бы дальше не выполнять наш сайт и что бы не отдало ещё и шаблон
   }
}
запрос будет index.php?task=getAjaxMyData
3.В компонент index.php?option=com_mycomponent&task=getAjaxMyData
тут тоже все просто как и в плагине! Только в дефолтном контроллере пишем метод:
public function getAjaxMyData(){
   echo '123';
   exit;
}
4. способ начиная с Joomla  3.2 использовать встроенный com_ajax http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/ajax-v-joomla-3-2
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: AJAX подгрузка любого модуля
« Ответ #13 : 04.06.2014, 11:59:22 »
Спс, поизучаю =)
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: AJAX подгрузка любого модуля
« Ответ #14 : 04.06.2014, 12:21:26 »
Хелпер зараза не работает без инициализации приложения, так что или плагин или скрипт, вот такой у меня получился(положил его в корень сайта):
Код: php
define('_JEXEC', 1);
define('JPATH_BASE', dirname(__FILE__). '/' );
define('DS', DIRECTORY_SEPARATOR);
require_once(JPATH_BASE.DS.'includes'.DS.'defines.php');
require_once(JPATH_BASE.DS.'includes'.DS.'framework.php');
require_once(JPATH_BASE.DS.'libraries'.DS.'joomla'.DS.'application'.DS.'module'.DS.'helper.php');
JFactory::getApplication('site')->initialise();
$module = JModuleHelper::getModule('mod_login');
echo JModuleHelper::renderModule($module);
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: AJAX подгрузка любого модуля
« Ответ #15 : 04.06.2014, 12:31:13 »
Хелпер зараза не работает без инициализации приложения, так что или плагин или скрипт, вот такой у меня получился(положил его в корень сайта):
Естественно не будет работать ) Да всегда забываю про этот вариант использования для дальнейшей работы с аяксом)
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: AJAX подгрузка любого модуля
« Ответ #16 : 04.06.2014, 12:32:51 »
P.S.
я может ошибаюсь но по моему этот метод:
$module = JModuleHelper::getModule('mod_login');
echo JModuleHelper::renderModule($module);
не учтет настройки модуля в админке...
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: AJAX подгрузка любого модуля
« Ответ #17 : 04.06.2014, 12:36:40 »
Учтет если модуль один, если несколько - будет путаница.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: AJAX подгрузка любого модуля
« Ответ #18 : 04.06.2014, 12:44:46 »
в объекте $module есть свойство params c json строкой и rendermodule вроде как парсит ее в объект.  в rendermodule надо только передать атрибуты для стилизации, он в метод mod_chrome... передает эти парметры.

Учтет если модуль один, если несколько - будет путаница.
хмм, не знаю, а как быть когда несколько модулей?
интернет-блог: http://websiteprog.ru
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: AJAX подгрузка любого модуля
« Ответ #19 : 04.06.2014, 12:46:05 »
хмм, не знаю, а как быть когда несколько модулей?
Тогда можно по названию модуль получить getModule($name, $title = null)
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: AJAX подгрузка любого модуля
« Ответ #20 : 04.06.2014, 12:49:16 »
Тогда можно по названию модуль получить getModule($name, $title = null)

так и получаю вроде. Я так понял что путаница будет когда много копий этого модуля. их же вроде как тиражировать можно)
интернет-блог: http://websiteprog.ru
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: AJAX подгрузка любого модуля
« Ответ #21 : 04.06.2014, 12:50:57 »
Я так понял что путаница будет когда много копий этого модуля
Аха, тогда вторым параметром передается название и получается конкретный модуль. Хотя нахвания тоже могут быть одинаковые, но это маловероятно.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: AJAX подгрузка любого модуля
« Ответ #22 : 04.06.2014, 13:02:42 »
Аха, тогда вторым параметром передается название и получается конкретный модуль. Хотя нахвания тоже могут быть одинаковые, но это маловероятно.
У меня кстати так и не получилось таким методом схватить модуль.. писало ошибку, возможно потому что имя модуля на русском.. не проверял точно, вывел по позиции в итоге )
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: AJAX подгрузка любого модуля
« Ответ #23 : 04.06.2014, 14:05:40 »
У меня кстати так и не получилось таким методом схватить модуль.. писало ошибку, возможно потому что имя модуля на русском.. не проверял точно, вывел по позиции в итоге )
Хех, тогда толку от параметра, если он русский не подхватывает =)
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: AJAX подгрузка любого модуля
« Ответ #24 : 04.06.2014, 14:10:57 »
Хех, тогда толку от параметра, если он русский не подхватывает =)
Странно сейчас попробовал работает ) Возможно был косяк на предыдущей ветке какой то...
*

r0m4n

  • Осваиваюсь на форуме
  • 23
  • 0 / 0
Re: ajax подгрузка любого модуля
« Ответ #25 : 13.12.2019, 11:10:39 »
мнда, тема старая, но...
Делаем следующий дополнительный файл в шаблоне, например module.php
Где этот  файл module.php будет лежать конкретно?

Кажется так( *ОХ-Х-Х*): корень_директории_сайта/templates/какое-то ваше имя(напр /beez3/)/module.php
ОКЭ
« Последнее редактирование: 13.12.2019, 11:50:35 от r0m4n »
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Re: ajax подгрузка любого модуля
« Ответ #26 : 14.12.2019, 09:40:08 »
На мой взгляд проще уж и вовсе весь сайт через AJAX грузить и только главную отдавать в виде статики, как точку входа. При желании можно будет даже закешировать сайт в хранилище или используя воркеры. Будет работать даже без интернета, вот пользователи удивятся, если увидят.
*

r0m4n

  • Осваиваюсь на форуме
  • 23
  • 0 / 0
Re: ajax подгрузка любого модуля
« Ответ #27 : 18.12.2019, 16:09:35 »
_
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: ajax подгрузка любого модуля
« Ответ #28 : 18.12.2019, 17:22:59 »
Полностью сайт на AJAX только для мелких проектов, где пяток страниц.
Была такая мода, делать крупные проекты с подгрузкой на лету, ну бессмысленно это.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Re: ajax подгрузка любого модуля
« Ответ #29 : 19.12.2019, 14:08:25 »
Полностью сайт на AJAX только для мелких проектов, где пяток страниц.
Была такая мода, делать крупные проекты с подгрузкой на лету, ну бессмысленно это.

Почему же?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Убрать из модуля новостей ссылку на статью, на которой выводится модуль

Автор zeus07

Ответов: 3
Просмотров: 708
Последний ответ 08.11.2023, 21:17:26
от GrayAn
Изменение отображения модуля от разрешения экрана

Автор mag_num83

Ответов: 5
Просмотров: 512
Последний ответ 17.05.2023, 09:35:23
от Театрал
Как удалить позицию модуля в настройках модуля?

Автор 62411

Ответов: 6
Просмотров: 404
Последний ответ 12.03.2023, 18:24:38
от 62411
ajax загрузка компонента на странице материала К2

Автор Divn

Ответов: 0
Просмотров: 520
Последний ответ 13.01.2023, 15:05:52
от Divn
При срабатывании ajax появляетсся div id="system-message-container"

Автор androv77

Ответов: 1
Просмотров: 452
Последний ответ 17.11.2022, 11:50:42
от androv77