Добрый день. В Joomla есть расширенные возможности, в частности возможность выводить сведения (материалы) в отдельном окне - JHTML::_( 'behavior.modal' );. Кто с этим может умело работать, поясните пожалуйста нюансы. Используя .... Код (CODE): <a class="modal" href="/images/garfild.jpg" rel="{handler: 'iframe', size: {x: 640, y: 480}}"> <img src="/images/small_garfild.jpg"> </a> ....мы успешно загрузим картинку и это все чудесно, но этого не достаточно. К примеру, необходимо вывести в модальном окошке список "объектов" из базы данных для выбора. Предположим. Я делаю свой компонент, у меня есть список (скажем список учащихся), так же есть "Учебные курсы", есть "Чебные группы". Суть заключается в том что эти данные уже существуют в виде списков в админпанели. И требуется редактируя группу добавить в нее "Учащихся" 1...2...5..15 человек. Такое добавление удобно выполнять, скажем щелкая на кнопке "Добавить" поднять окошко со списком учащихся и дать возможность выбрать одного или нескольких. нажать кнопку "ОК" и чтобы выбранные добавились в "Учебную группу" ... На словах все предельно ясно и просто. Сама ситуация подсказывает что это надо решать через всплывающее модальное окошко. Но препятствует в решении множество вопросов без ответов и отсутствие практического опыта. Вопрос 1. "Поднять" модальное окошко - не проблема, здесь все ясно и примеров этому множество. Используя код типа этого: Код (CODE): <a class="modal" title="<?php echo JText::_('SELECT'); ?>" href="http://joomla-support.ru/newthread.php? do=postthread&f=38" rel="{handler: 'iframe', size: {x: 650, y: 375}}"> <?php echo JText::_('SELECT'); ?></a> Мы в итоге увидим окошко, но в этом окошке (во фрейме) загрузится вся страничка целиком, со всеми элементами. А хотелось бы загрузить только список элементов уже существующий и раелизованый в компоненте, к примеру список "Учащихся" как в админпанели, но без кнопочек и меню - просто список. Как такое решается? Можно ли вообще, получить хоть принципиальные пояснения концепции этой реализации. Исходя из модели Controller-Model-View. Для этого необходимо подготовить отдельный файл-модель, файл-view-tmpl или есть способы, которыми можно обойтись на существующих объектах (список необходимых данных уже существует в админпанели)? Как вообще знающие люди это решают?
для получения контента только нужного Вам компонента, Вам необходимо передать дополнительные параметры Код (PHP): &tmpl=component&format=raw , а если необходимо получить конкретные данные, то проще написать запросы вручную. И по поводу модальных окон - можете посмотреть в сторону JqueryUI.
Фрейм подымает отдньное окно, а линк который в него передается должен вести на ваш новый контроллер, который надо самому в компоненте под вывод нужных данных дописать... (по другому помоему ни как)
2 Tureckiy & omfgpanda Спасибо за ответы. Тут больше интересует именно стандартный MooTools интегрированный в Joomla. Я создал, по совету Tureckiy, контроллер для необходимого списка, список в модальном окне получаю. Теперь у меня вопрос, как сделать так. чтобы по щелчку на элементе, передать параметром, например его ID в элемент формы из которой поднималось модальное окно? Я не могу ни как понять как работает этот механизм. Как передаются в этом случае параметры в родительскую форму (в форму откуда был поднят список в модальном окне MooTools). P.S. - Возможно мои вопросы наивные или глупые, прошу прощения - это от неопытности.
модальное окно - есть некий слой, который закрывает доступ к контенту страницы + слой, который в данный момент активен. Таким образом что бы передать параметры на "родительскую" страницу вам необходимо записать его в любой атрибут любого элемента на этой странице, либо в поле нужной вам формы. Т.е. фактически вы находитесь на этой же странице и можете обращаться к любым ДОМ-элементам.
Ага... Только а в Jooml'е используется SqueezeBox на основе MooTools http://digitarald.de/project/squeezebox/
предлагаю посмотреть это на примере уже работающего выбора материалов для пункта меню в том случае если пункт меню указан как "Стандартный шаблон материала" в редактировании пункта меню есть поле "Выберите материал" и кнопка "Выбрать" вот там и кроется простой пример реализации нужной функциональности - насколько я понимаю ваш вопрос. так что надо просто полистать уже имеющиеся исходники..... [\administrator\components\com_content\elements\article.php] //декларируется функция -- затем эта ф-я вызывается в "\administrator\components\com_content\views\element\view.php" по событию "onClick" на названии (в данном случае - статьи...) $js = " function jSelectArticle(id, title, object) { document.getElementById(object + '_id').value = id; document.getElementById(object + '_name').value = title; document.getElementById('sbox-window').close(); }"; $doc->addScriptDeclaration($js); JHTML::_('behavior.modal', 'a.modal'); /// подключает "\libraries\joomla\html\html\behavior.php" --[BEGIN] $document->addScriptDeclaration(" window.addEvent('domready', function() { SqueezeBox.initialize(".$options."); $$('".$selector."').each(function(el) { el.addEvent('click', function(e) { new Event(e).stop(); SqueezeBox.fromElement(el); }); }); });"); --[END]