Joomla: JSON обработка запросов AJAX
Хочу рассказать точнее записать что-бы не забывать реализацию JSON запросов к серверу через библиотеку jQuery функция getJSON , часто уж голова выкидывает из памяти редко используемую информацию ))).
Естественно разработчики движка Joomla начиная с версии 1.5 которые используют шаблон программирования MVC позаботились об реализации данного функционала. А делается это просто:
Серверная часть: В вид (view) компонента добавляем класс view.json.php следующего содержания
<?php defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.application.component.view' ); class ComponentViewAjax extends JView { var $json = array(); public function display($tpl = null) { $result = new stdClass(); // или передать некий объект $this->json['result'] = $result; echo json_encode($this->json); exit(); } }
Надеюсь пояснять не надо что к чему иначе это не ваше и передайте работу профессионалу (не люблю это обращение).
И сам js запрос в сформированном html:
$.getJSON("<?php echo JURI::root(false) ?>index.php?option=com_component&view=ajax&format=json&request=1", function(json){ alert(json.result); // вывод JSON объекта });
Как видите все ну очень просто, за что и люблю разрабатывать сайты на Joomla, как бы его не хаяли, но гибкость в руках специалиста горы сворачивает. Таким же образом формируется и xml ответ на запрос, куда поставить xml думаю объяснять не надо ;)
Virtuemart транслитерация Алиас (псевдоним)
- Joomla /
- Virtuemart
- 30.07.2014
- job
- 8209
Если у кого проблемы с транслитерацией псевдонимов в латиницу, лечится просто
добавляем в запись БД,
таблица #__virtuemart_configs,
поле config,
добавить запись
|transliterateSlugs=s:1:"1";
Так же в файл конфигурации administrator/components/com_virtuemart/virtuemart.cfg добавить параметр
transliterateSlugs=1
Joomla plugin YouTube
Вы не поверите, что я нашел в каталоге приложений Joomla - плагин вставляющий видео с YouTube в материалы сайта. Но самое интересное, плагин с пометкой популярный, да еще в теле плагина shell прописан (боту ПС подпихивает ссылку или еще что-то там, не вникал в shell). Я ахренел, и никто до меня этого не увидел? Представляю сколько пострадавших. Будем писать в тех.поддержку каталога расширений на присутствие мошеника. Раз пошла такая пляска, решил его вычестить и расширить функционал плагина в итоге получилось нечто новое. Под названием YouTube Player Plugin
Обновление: Плагин jQuery для Joomla 2.5
Обновил системный плагин jQuery
Изменения:
- добавлены новые ветки в том числе 2.х
- библиотеки перемещены в медийную директорию 'media'
Скачать плагин plg_library_jquery.zip v2.5.2 для Joomla 2.5
Быстрый способ применить плагины content в своих целях
Зачем много слов? Все просто
<?php echo JHTML::_('content.prepare',$this->my_text); ?>
объяснять не буду, кто ищит подобную информацию сразуй поймет как и куда применять.
Расширяем настройки модуля. Добавляем текстовый редактор как в модуле mod_custom
Опишу небольшой хак по расширению функционала модулей. Часто встречается задача где в пользовательском модуле надо дополнительно вывести произвольный текст, как в модуле mod_custom.
Вот как это делается:
Joomla - преобразование строки params в массив $params
Бывают ситуации когда надо вытащить параметры какого нибудь модуля для использования его настроек на собственные нужды. Один из таких примеров интеграция плагина с модулем для корректной работы в компоненте. В общем с чем я сталкиваюсь в проектировании сложных систем на Joomla
И так. Как вытащить параметр модуля думаю не стоит описывать. Тупо подключаемся к БД, делаем запрос на нужный модуль и получаем строку с параметрами. К примеру в таком виде
{"layout":"default","method":"get","limit":"10","Parent_Category_id":["4","6"]}
Для преобразования строки в массив воспользуемся функцией JParameter
jimport('joomla.html.parameter'); // импорт библиотеки $str = '{"layout":"default","method":"get","limit":"10","Parent_Category_id":["4","6"]}'; $params = new JParameter( $str ); // Создание объектного массива echo $params->get('layout'); // Результат - default echo $params->get('method'); // Результат - get echo $params->get('limit'); // Результат - 10 echo $params->get('Parent_Category_id'); // Результат - array(2)
Еще один способ преобразовать JSON в объектный массив средствами php
$str = '{"layout":"default","method":"get","limit":"10","Parent_Category_id":["4","6"]}'; $params = json_decode($str); echo $params->layout; // Результат - default echo $params->method; // Результат - get echo $params->limit; // Результат - 10 echo $params->Parent_Category_id; // Результат - array(2)
Вот и вся соль. Ничего сложного, просто заметка на память.
Joomla 2.5 реализация SEF / ЧПУ
Для тех кто впервые создает или подходит к грамотному созданию компонент, модуль, плагин для Joomla данный мини мануал будет полезен. Речь пойдет о SEF URL (search engines friendly url) ну или для русскоязычного юзера ЧПУ (человекопонятные УРЛ), кому как одобней. Как же заставить средствами движка (в нашем случае Joomla 2.5) конвертировать кириллический url в транскрипцию латиницы?
Делается все средствами фреймворка, для создания alias (алиаса) используем class JApplication
$title = "Создаем ЧПУ / SEF заголовок"; $alias = JApplication::stringURLSafe($title); // В результате $alias присвоит // sozdaem-chpu-sef-zagolovok
Так же можно воспользоваться обычной транскрипцией без удаления (преобразования) спец символов следующей функцией
$lang = JFactory::getLanguage(); $text = "Создаем ЧПУ / SEF заголовок"; $text_conv = $lang->transliterate($text); // В результате $text_conv присвоит // sozdaem chpu / sef zagolovok
По мере надобности дополню описание...
Virtuemart 2: Оптимизация Category
- Joomla /
- Virtuemart
- 16.10.2013
- job
- 6352
На данный момент в разработке интернет-магазин Virtuemart2 с интеграцией 1С. Решил посмотреть на запросы виртмала и ужаснулся. Грандиозная утечка в БД. Как можно ради того что бы узнать Media изображение категории дополнительно обращаться к базе данных? Я в шоке. Это же все делается в том же запросе категорий. Капец, до сих пор успокоиться не могу.
Joomla - защита админки
Ну вот и обрушилась брутфорс атака на админку Joomla, причем на все сайты сервера. И похоже конкретный ботнет работает. Все ip разные, каждый банить не будешь, чем раньше и спасался. Давно вынашивал план защищаться от подборщиков паролей с помощью .htaccess