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 транслитерация Алиас (псевдоним)

Если у кого проблемы с транслитерацией псевдонимов в латиницу, лечится просто

добавляем в запись БД,
таблица #__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

На данный момент в разработке интернет-магазин Virtuemart2 с интеграцией . Решил посмотреть на запросы виртмала и ужаснулся. Грандиозная утечка в БД. Как можно ради того что бы узнать Media изображение категории дополнительно обращаться к базе данных? Я в шоке. Это же все делается в том же запросе категорий. Капец, до сих пор успокоиться не могу.

Подробнее...

Joomla - защита админки

Ну вот и обрушилась брутфорс атака на админку Joomla, причем на все сайты сервера. И похоже конкретный ботнет работает. Все ip разные, каждый банить не будешь, чем раньше и спасался. Давно вынашивал план защищаться от подборщиков паролей с помощью .htaccess

Подробнее...

Подкатегории