Класс JHTML в Joomla. Описание базовых методов

31/03/2010 Документация Joomla 1.5

В этой части я постараюсь немного рассказать как использовать базовые методы класса JHTML. В Joomla есть свои методы для вывода того или иного кода. Но это не значит, что все и всегда так нужно делать, и это не лекарство от всех болезней. Иногда бывает полезно использовать этот функционал, для того что бы не писать лишний раз тот или иной код. Но повторюсь, злоупотреблять им все же думаю не стоит, т.к. лучше все таки вписать пару строчек ручками, чем вызывать тот или иной метод. Как никак на производительность это может влиять, пусть даже и не сильно.

По этой же причине описывать все методы, думаю, не имеет смысла. Опишу только те, которые могут пригодиться в той или иной ситуации.

Вывод изображений с помощью средст Joomla

<?php echo JHTML::_('image', 'images/apply_f2.png', 'ALT Картинки', 'heght="30" width="30"'); ?>

Результатом будет следуещие

<img width="30" heght="10" alt="ALT Картинки" src="/template/images/apply_f2.png">
  • images/apply_f2.png - путь к картинке относительно корня сайта. Здесь стоит отметить, что если путь не начинается с http, то он будет браться относительно корня сайта и первый слеш нужно не ставить;
  • ALT Картинки - это соответсвенно атрибут alt;
  • heght="30" width="30" - в последней переменной соответсвенно передаем нужные параметры (атрибуты);

Существует еще дополнительный класс JHTMLImage, который расширяет стандартные возможности.
Например можно вызвать картинку из используемого шаблона, папки images

<?php echo JHTML::_('image.site', 'login-bg.gif', null, null, null, 'ALT', 'attributs' ); ?>

Выведит картинку login-bg.gif из папки images, используемого шаблона, с соответствующим альтом и атрибутами.
Остальное, я думаю, с выводом картинок использовать бессмысленно.

Вывод даты с помощью средст Joomla

<?php echo JHTML::_('date', $date = null, $format = '%Y-%m-%d %H:%M:%S', $offset = NULL ); ?>
  • $date - сама дата. В примере я вывел текущую (null), так же для вывода текущей даты можно использовать 'now';
  • $format - формат вывода даты. Joomla использует свой формат, поэтому timestamp здесь работать не будет. Все числовые данные я показал как выводить в примере;

Что касается отдельно вывода название месяца и дня недели:

%a - вывод коротко дня недели;
%A - вывод полностью дня недели;
%b - вывод коротко названия месяца;
%B - вывод полностью названия месяца;

  • $offset - переменная, которая устанавливает часовой пояс для даты. Если переменная будет NULL, то часовой пояс будет браться из общих настроек Joomla.

Вывод календаря испльзуемого в Joomla

<?php echo JHTML::_('calendar', $value = '5', $name='test', $id='test', $format = '%Y-%m-%d', $attribs = null); ?>

При этом подключаться скрипты для календаря (calendar.js и calendar-setup.js), а так же стили (calendar-jos.css). Mootools для него не нужен.

Эта конструкция выведит инпут бокс с оответствующими атрибутами:

<input type="text" value="5" id="test" name="test">

И рядом с ним стандартный календарик, который использутся, к примеру, в админке Joomla.

Еще один способ подключения этого же календаря

1. Подключаем скрипты

<?php JHTML::_('behavior.calendar'); ?>

2. В документе пишем

<input value="5" type="text" name="created" id="fromdate" />
<input type="reset" value="..." onclick="return showCalendar('fromdate','%Y-%m-%d');" />

При этом нужно учитывать формат выводимой даты в value и формат который мы задаем в скрипт.
Так же нужно следить что бы id инпутбокса (fromdate) соответствовало первой переменной, передаваемой в скрипт.

Подключение файлов скриптов в Joomla

<?php JHTML::_('script', $filename = 'calendar.js', $path = 'media/system/js/', $mootools = true ); ?>
  • $filename - название подключаемого скрипта (я для примера взял calendar.js);
  • $path - путь к файлу скрипта (по умолчанию media/system/js/). Здесь стоит отметить, что если путь не начинается с http, то он будет браться относительно корня сайта и первый слеш нужно не ставить.
  • $mootools - подключать или не подключать mootools. По умолчанию стоит в true, т.е. подключается.

Так же для того что бы подключить отдельно mootools можно использовать такую конструкцию:

<?php JHTML::_('behavior.mootools'); ?>

Скрипты подключается к документу в области, где в шаблоне стоит

<jdoc:include type="head" />

Так же файлы скриптов и сами скрипты можно подключать следующим образом:

$document = &JFactory::getDocument();
$document->addScript(string $url, [string $type = "text/javascript"]);
$document->addScriptDeclaration(string $content, [string $type = 'text/javascript'])

Подключение файлов стилей в Joomla

<?php JHTML::_('stylesheet', $filename = 'file.css', $path = 'media/system/css/' , $attribs = array() ); ?>

Осуществляется аналогичным образом, что и скриптов. За исключение того что в последнюю переменную передаются дополнительные атрибуты, если они нужны, в виде массива.

Другой способ:

$document = &JFactory::getDocument();
$document->addStyleSheet (string $url, [string $type = 'text/css'], [string $media = null], [ $attribs = array()]);
$document->addStyleDeclaration (string $content, [string $type = 'text/css']);

Подключение и вывод ТoolTip

JHTML::_('behavior.tooltip');
$tooltip = array('tip' => JText::_('VIEW_ATTRIBUTES'), 'title' => JText::_('ATTRIBUTES_LIST'), 'image' => 'edit.png', 'text' => null, 'href' => null);
echo JHTML::_('tooltip', $tooltip['tip'], $tooltip['title'], $tooltip['image'], $tooltip['text'], $tooltip['href']);
?>

Если нужно вывести картинку вводим $tooltip['image'], если текст $tooltip['text']. Если нужно добавить еще и ссылку то вписываем $tooltip['href']


42 

Комментарии   

 
+3 guffer
02.04.2010 11:18
Очень полезная инфа. а где можно почитать про остальные методы и классы?
 
 
+1 ecolora
24.06.2010 10:04
Полагаю, было бы неплохо Вам организовать на сайте функционал оповещения об орфографических ошибках. К примеру у Вас в этой строке "Эта конструкция выведит инпут бокс с оответствующими атрибутами:" слово "выведет" написано неправильно.
Я использую, к примеру, com_proofreader

Я не пытаюсь придираться. Наоборот - читаю вдумчиво Ваш текст. Поэтому заметил. А за ликбез спасибо!
 
 
+1 csoldier
16.03.2011 21:02
спасибо за статью
 
 
+1 Андрей
03.06.2011 04:27
Можно узнать возможность организации вывода статей по нынешней дате!?
 
 
+1 Владимир
28.08.2011 13:44
Очень полезная статья. Почти то что мне нужно, но ... сразу в процессе создания сайта я пытаюсь его оптимизировать в меру сил. Одно из правил, добавление внешних Javascript файлов после добавления файлов CSS стилей. При этом желательно вообще все JS размещать в конце страницы. Вопрос как раз в том, как "сказать" Joomle, чтобы вывод JS был в самом конце секции Body.
 
 
+2 SmokerMan
20.09.2011 00:44
Цитирую Владимир:
Очень полезная Вопрос как раз в том, как "сказать" Joomle, чтобы вывод JS был в самом конце секции Body.

Никак, для этого нужно переделывать ядро. Даже плагинами такое, думаю, проблематично будет реализовать.
Да и в общем, то что скрипты должны прописываться в конце страницы - это глубокое заблуждение. Почитайте документацию htmlbook.ru/html/script
Единственное когда это может быть полезно, так это для загрузки внешних JS (c других сайтов). Но их можно прописать в шаблоне самому где угодно.
 
 
+1 Павел
24.08.2013 17:07
А что значит behavior?
 
 
0 Василий
04.01.2015 15:24
хороший сайт, спасибо за статью.
но в голосовалке стукнул на 1чку, начал читать и с первых строй вопрос что читаю, о чём как рекоммендовано использовать этот класс авторами ..
а как общий расширитель сознания таблетка хорошая
 
 
0 Alicia
17.05.2016 10:56
Это действительно здорово, что я был найти все это время. совершенно удивительно, и я до сих пор удивляюсь, как я могу посетить этот сайт reflective vest