3 новых полезных класса в Joomla 2.5
В платформе Joomla 2.5 разработчики добавлил несколько полезных новых классов для разработчиков. Рассмотрю некоторый из них - JGrid (для построения HTML таблиц), JWebClient (для получения информации о клиенте, особенно полезен для мобильных устройств) и JImage (для работы с изображениями).
JGrid
Данный класс был создан для генерации HTML таблиц. Довольная полезный класс для разработчиков, раньше им приходилось придумывать свои приемы для этого. Для полной информации о классе и его методах можно посмотреть файл - libraries/joomla/html/grid.php
Пример использования данного класса для генерации простой HTML таблицы:
<?php jimport('joomla.html.grid'); //$options - ассоциативный массив для атрибутов тега <table> $table = new JGrid($options = array()); //добавляем новые элементы в заголовок таблицы //$options - ассоциативный массив для атрибутов тега <tr> //1 - заголовок, любое другое значение - футер, если значение не установлено, то просто будут теги <tr><td>... $table->addRow($options = array(), 1); for ($i = 1; $i < 4; $i++) { $name = 'Нeader'.$i; //добавляем колонку с установленным именем $table->addColumn($name); //добавляем контент в колонку с указанным именем //$option - ассоциативный массив для атрибутов тега <td> $table->setRowCell($name, 'Content for ' .$name, $option = array()); } //добавляем новые элементы в тело таблицы $table->addRow($options = array()); for ($i = 1; $i < 4; $i++) { $name = 'Сontent'.$i; $table->addColumn($name); $table->setRowCell($name, 'Content for ' .$name); } //добавляем новые элементы в footer таблицы $table->addRow($options = array(), 2); for ($i = 1; $i < 4; $i++) { $name = 'Footer'.$i; $table->addColumn($name); $table->setRowCell($name, 'Content for ' .$name); } //вывод полученной таблицы echo $table->toString(); ?>
JWebClient
Данный класс предназначен для определения инофрмации о клиенте (пользователе), такой как ОС, браузер, язык и другой. Здесь стоит отметить поддержку мобильных устройств iPhones, iPads, Androids и других систем. Это позволяет разработчикам на основе этих данных выполнять те или иные действия. Данный класс описан в файле - libraries/joomla/application/web/webclient.php
Пример:
<?php jimport('joomla.application.web.webclient'); //$userAgent - опционально для разбора строки user-agent //$acceptEncoding - опционально для разбора строки encoding //$acceptLanguage - опционально для разбора строки language $client = new JWebClient($userAgent = null, $acceptEncoding = null, $acceptLanguage = null); var_dump($client); ?>
Выдаст результат:
object(JWebClient)[613] protected 'platform' => null protected 'mobile' => boolean false protected 'engine' => null protected 'browser' => null protected 'browserVersion' => null protected 'languages' => array empty protected 'encodings' => array empty protected 'userAgent' => string 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1' (length=74) protected 'acceptEncoding' => string 'gzip, deflate' (length=13) protected 'acceptLanguage' => string 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3' (length=35) protected 'detection' => array empty
Для получения свойста класса можно использовать метод __get($name) данного класса. Например, для того что бы узнать, зашел ли пользователь с мобильного устройства можно использовать:
<?php jimport('joomla.application.web.webclient'); $client = new JWebClient(); $client->__get('mobile'); ?>
JImage
Данный класс предназначен для работы с изображениями. С помощью данного класса можно получить информацию о изображении, а также делать различные манипуляции с ним (изменять размеры, устанавливать различные фильтры и прочее). Данный класс описан в файле - libraries/joomla/image/image.php, различные фильтры для изображение находятся в директории libraries/joomla/image/filters/
В качестве простого примера можно взять стандартный баннер "open source matters" (файл изображения - /images/banners/osmbanner1.png), уменшим его размеры в 2 раза и сохраним в ту же директорию в файл "osmbanner1_thumb.png":
<?php jimport('joomla.image.image') //создаем новый объект JImage $image = new JImage(); $path = JPATH_BASE.DS.'images'.DS.'banners'.DS; //загружаем исходный файл $image->loadFile($path.'osmbanner1.png'); //уменьшаем размеры в 2 раза $new_width = round($image->getWidth() / 2); $new_height = round($image->getHeight() / 2); //задаем размеры для нового изображения. //параметр "true" означает, что данный метод вернет новый объект JImage уже с измененным изображением $newimg = $image->resize($new_width, $new_height, true); //сохраняем изображение в новый файл $newimg->toFile($path.'osmbanner1_thumb.png', IMAGETYPE_PNG); ?>