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

zt.Dan4ik

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Module & JSON
« : 24.10.2011, 18:05:14 »
Доброе время суток. Есть потребность в написании модуля для поиска по стороннему компоненту с использованием JQuery Autocomplete
Ниже привожу пример рабочего скрипта:

Клиент
Спойлер
[свернуть]

Сервер
Спойлер
[свернуть]

Вопрос в том как такое можно реализовать в модуле для Joomla, а именно куда должна вести ссылка клиентского скрипта для выборки из базы? Сейчас она выглядить вот так url: "autocomplete.php",
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Module & JSON
« Ответ #1 : 24.10.2011, 18:08:52 »
Необходимо создать компонент, к которому и надлежит обращаться.
Как плохой вариант, можно сделать отдельный файл в папке модуля, который будет сам обрабатывать запрос - без API Joomla, или даже включить в него АПИ, но это кривой путь, на мой взгляд. Проще все-таки сделать небольшой компонент, который будет обрабатывать запросы.
*

zt.Dan4ik

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Re: Module & JSON
« Ответ #2 : 24.10.2011, 18:30:17 »
Поиск будет выполнятся по данным таблиц компонента com-property
Возможно будет лучше в самом компоненте com-property добавить задачу выборки данных к которому будет обращаться скрипт... Возможно ли так это реализовать?
Если да, то пожалуйста объясните с чего начать? Насколько я понимаю в модели компонента необходимо добавить задачу в котором будет серверная часть скрипта (mysql запрос) а в клиентском скрипте указать ссылку к компоненту-контроллеру-виду...
Но уверен что не совсем правильно я мыслю, не хватает знаний :(
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Module & JSON
« Ответ #3 : 24.10.2011, 18:32:40 »
Правильно.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Module & JSON
« Ответ #4 : 24.10.2011, 18:33:50 »
надо в контроллер компонента добавить метод, который будет вызываться через AJAX и возвращать необходимые данные.
модель - по желанию, вид - не нужен, поскольку отдаваться будет JSON прямо из контроллера.
Вот тут есть общая информация:
http://docs.joomla.org/Adding_AJAX_to_your_component
*

zt.Dan4ik

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Re: Module & JSON
« Ответ #5 : 25.10.2011, 11:19:54 »
Т.е. в моём случаи в главном контроллере компонента добавляется метод

Спойлер
[свернуть]

а скрипт должен обращаться по ссылке index.php?option=com_properties&task=jsonsearch ?
 
  
« Последнее редактирование: 25.10.2011, 11:36:44 от zt.Dan4ik »
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Module & JSON
« Ответ #6 : 25.10.2011, 11:37:41 »
Все верно. Только к вызову добавьте еще &format=raw чтобы Joomla не добавляла HTML свой
*

zt.Dan4ik

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Re: Module & JSON
« Ответ #7 : 25.10.2011, 12:33:57 »
А в контролере компонента можно как-то доставать параметры из модуля?
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Module & JSON
« Ответ #8 : 25.10.2011, 12:46:13 »
Можно. JModuleHelper::getModule('mod_module')->params
*

zt.Dan4ik

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Re: Module & JSON
« Ответ #9 : 25.10.2011, 12:51:08 »
Огромное вам спасибо ;)
Сейчас будем все реализовывать  8)
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Module & JSON
« Ответ #10 : 25.10.2011, 16:28:57 »
Можно. JModuleHelper::getModule('mod_module')->params
А если копий модуля несколько?
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Module & JSON
« Ответ #11 : 25.10.2011, 16:30:56 »
А если копий модуля несколько?

А в код заглянуть лениво? Там есть второй параметр title.
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Module & JSON
« Ответ #12 : 26.10.2011, 00:14:14 »
А в код заглянуть лениво? Там есть второй параметр title.
Если нужно, заглядываю. А так, мимо проходил, решил подлить масла...
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

zt.Dan4ik

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Re: Module & JSON
« Ответ #13 : 26.10.2011, 11:14:06 »
Маленький вопрос:
Ссылка типа - option=&view=properties&task=showresults означает использование модели showresults и вывод данных через вид properties?
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Module & JSON
« Ответ #14 : 26.10.2011, 13:10:38 »
маленький ответ: не обязательно, не обязательно
*

zt.Dan4ik

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Re: Module & JSON
« Ответ #15 : 26.10.2011, 13:25:00 »
маленький ответ: не обязательно, не обязательно
=) этот вопрос не касается моего модуля, просто не хотел создавать ради него отдельную тему. Мне нужно понять что происходит если выполняется данная ссылка, для примера, который поможет мне в моей задаче.
Модуль то я сделал, а теперь хочу расширить компонент, что бы он умел искать.
*

zt.Dan4ik

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Re: Module & JSON
« Ответ #16 : 26.10.2011, 16:36:29 »
да, и еще хотел спросить... Извините если надоедаю.
Контроллер (написан специально под мой модуль) получает данные введенный в форму поиска, делает с ними манипуляцию и передаёт в модель (стандартная модель компонента) поисковые данные. Но в модели данные для вывода информации получаются не с переменных которые пришли с котроллера, а вот таким способом:
Код
$menus = &JSite::getMenu();
$menu  = $menus->getActive();
$lid = $menu->query['lid'];
$sid = $menu->query['sid'];

Насколько я понимаю данные берутся из активного меню, т.е. только тогда когда пользователь добрался к модели с помощью меню.
Очень не хотелось бы что-то добавлять в стандартные файлы компонента. Возможно как-то заранее в контроллере задать параметр $menu->query ?

Сейчас же приходится в моделе делать условие

Код
$menus = &JSite::getMenu();
$menu  = $menus->getActive();
$slid = JRequest::getVar('lid');
$ssid = JRequest::getVar('sid');
if ($slid > 0 and $slid > 0) {
$menu->query['lid'] = $slid;
$menu->query['sid'] = $ssid;
}
$lid = $menu->query['lid'];
$sid = $menu->query['sid'];
« Последнее редактирование: 26.10.2011, 16:44:10 от zt.Dan4ik »
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Module & JSON
« Ответ #17 : 26.10.2011, 17:08:06 »
Боюсь, это единственный вариант.
*

zt.Dan4ik

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Re: Module & JSON
« Ответ #18 : 28.10.2011, 11:50:37 »
Всем спасибо за помощь. Результат работы вот тут http://joomlaforum.ru/index.php/topic,183651.new.html Возможно этот модуль кому-то пригодится.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться