В этой статье я расскажу о классе JHtml который является утилитой для отображения различных HTML элементов.
С помощью него можно создавать ссылки, подключать стили и скрипты, выводить изображения и много всяких прочих полезных функция для облегчения и ускорения работы программиста!

Так как этот материал очень большой и обширный то эта статья будет разбита на несколько частей в которых я буду рассказывать какие есть функции, какие у них параметры и как они работают!

Итак начнем с основ!

К версии 3.10 этот класс переименован в \Joomla\CMS\HTML\HTMLHelper и скоро сам JHtml вудет удалён, так что приы\выкайте использовать в начале файла строку.

use \Joomla\CMS\HTML\HTMLHelper as JHtml;

 

Первый метод это загрузчик классов и методов в этих классах, классы лежат в /libraries/joomla/html/

JHtml::_('имя_класса.имя_метода', $переменная1, $переменная2, ...,$переменнаяN);

В первом параметре этого метода передается имя класса который лежит в папке /libraries/joomla/html/ и после точки имя метода который вызовется в этом классе! Все остальные параметры после первого передадутся в этот метод который мы вызываем. У некоторых методов может и не быть параметров!

Подробнее об всех этих классах и их методах будем рассматривать в следующих статьях! Сейчас продолжим рассматривать методы класса JHtml:

Итак следующий метод: calendar($value, $name, $id, $format = '%Y-%m-%d', $attribs). параметры этого метода:
$value - текущее значение в текстовом поле календаря
$name - имя поля в которое будет вставляться значение после выбора даты
$id - идентификатор поля в которое будет вставляться значение после выбора даты
$format - формат даты для вставки в поле
$attribs - прочие атрибуты тега поля в котором будет отображается дата
Пример:

echo JHtml::calendar( '2012-06-10', 'calendar_name', 'caledar_id', '%Y-%m-%d', $attribs );

Результатом работы примера будет:
calendar

Внимание! Для работы этого календаря должна быть подключена библиотека mootools!

Следующий метод JHtml::date( $input, $format ); - выводит дату. Параметры этого метода:
$input - любая дата (например переданная из записи в базе данных), если в параметре указать значение now то будет использоваться текущая дата
$format - формат вывода даты
. Пример работы:

echo JHtml::date( '25.03.2012', 'Y-m-d' );//выведет 2012-03-25echo 
echo JHtml::date( 'now', 'd.m.Y' ); //выведет текущую дату (23.09.2012)

Следующий метод JHtml::iframe($url, $name, $attribs, $noFrames); - выводит iframe в указанном месте!
Параметры этого метода:
$url - ссылка страницы которую открывать в iframe
$name - атрибут name в теге iframe
$attribs - прочие атрибуты тега iframe
$noFrames - текст который выводится если фреймы не поддерживаются
Пример работы:

echo JHtml::iframe('google.ru', 'myFrame', null, 'Ваш браузер не поддерживает фреймы!' );

Следующий метод JHtml::image($file, $alt, $attribs ); - выводит тег img в котором будет изображение! Параметры этого метода:
$file - путь к файлу изображения
$alt - атрибут alt тега img
$attribs - прочие атрибуты тега img
Пример работы:

echo JHtml::image('images/blog/jhtml/calendar.png', 'Календарь' );

Следующий метод JHtml:: link($url, $text, $attribs) - выводит ссылку. Параметры этого метода:
$url - ссылка
$text - текст ссылки
$attribs - атрибуты тега img
Пример работы:

echo JHtml::link('blog/', 'Моя ссылка');//выведет <a href="/blog/">Моя ссылка</a>

Следующий метод JHtml::script( $file , $framework ); - подключает JavaScript файл! Функция подключает только js файлы которые находятся на сервере и проверяет на их наличие по указанному пути! Скрипт подключится только если в шаблоне есть вставка <jdoc:include type="head" />
Параметры этого метода:
$file - путь к .js файлу
$framework - если эту переменную установить в true то будет подключен mootools framework
Пример работы:

JHtml::script( 'templates/my_template/scripts/myscript.js' );

Следующий метод JHtml::stylesheet($file); - подключает css файл! Функция подключает только css файлы которые находятся на сервере и проверяет на их наличие по указанному пути! Стили подключатся только если в шаблоне есть вставка <jdoc:include type="head" />
Параметры этого метода:
$file - путь к .css файлу
Пример работы:

JHtml::stylesheet( 'templates/my_template/css/styles.css' );

Далее мы рассмотрим классы category, date, email и form

Итак первый класс JHtmlCategory имеет два метода:
options - вернет массив категорий для определенного компонента
categories - тоже вернет массив категорий и плюс вернет строку "Создать в корне"
Пример вызова этих методов:

print_r( JHtml::_( 'category.categories', 'com_content' ) );
print_r( JHtml::_( 'category.options', 'com_content' ) );

Оба этих метода создадут массив который можно использовать при построении списков!

Следующий класс JHtmlDate это синоним метода JHtml::date( $input, $format ); описанный в первой статье о классе JHtml на этой странице.

Работает он точно также только немного другой вызова:

echo JHtml::_( 'date', 'now' ); //выведет текущую дату
echo JHtml::_( 'date', '24.09.2012', 'Y-m-d' ); //выведет 2012-09-24

 

Следующий класс JHtmlEmail содержит единственный метод cloak обеспечивает сокрытие E-mail адреса с помощью JavaScript что бы его не могли прочесть различные парсеры или граберы.
Пример вызова:

echo JHtml::_( 'email.cloak', 'user@mail.ru' );


Результат выполнения этого кода будет следующий код:

<script type='text/javascript'>
 <!--
 var prefix = 'ma' + 'il' + 'to';
 var path = 'hr' + 'ef' + '=';
 var addy64231 = 'user' + '@'>;
 addy64231 = addy64231 + 'mail' + '.' + 'ru';
 document.write('<a ' + path + '\'' + prefix + ':' + addy64231 + '\'>');
 document.write(addy64231);
 document.write('<\/a>');
 //-->\n </script><script type='text/javascript'>
 <!--
 document.write('<span style=\'display: none;\'>');
 //-->
</script>Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
<script type='text/javascript'>
 <!--
 document.write('</');
 document.write('span>');
 //-->
</script>

Следующий класс JHtmlForm содержит единственный метод token выводит скрытое поле которое служит для защиты от "CSRF" эксплоитов
Пример вызова: 

echo JHtml::_( 'form.token' ); 
//выведет <input type="hidden" name="bff83c19abf06543bffa4c75dbc4a2d6" value="1" />

Этот метод используется для передачи в любой форме после того как он будет передан проверить на корректность этого поля можно так:

if ( !JFactory::getSession()->checkToken() ) {
 echo 'Данные можно отправлять только с сайта!';
}