Главная » Joomla » Статьи о Joomla » Основы Joomla » Различие в работе метода JHTML::stylesheet в Joomla 1.5 и Joomla 1.7
Распечатать статью

Различие в работе метода JHTML::stylesheet в Joomla 1.5 и Joomla 1.7

В Joomla, начиная с версии 1.5, появился очень удобный вспомогательный класс JHTML с набором статичных методов для упрощения работы с HTML-разметкой документа. В том числе, присутствует метод JHTML::stylesheet, позволяющий быстро подключить требуемый CSS-файл стилей. На днях я обнаружил одно неприятное различие в работе этого метода в Joomla 1.5 и Joomla 1.7, которое создает небольшие проблемы в реализации универсального кода модуля для обеих версий Joomla.

Проблема кроется в различии сигнатур метода в этих версиях Joomla. Изначально данный метод был объявлен вот так:

function stylesheet($filename, $path = 'media/system/css/', $attribs = array())


Как видно из объявления функции в Joomla 1.5, у метода stylesheet первым параметром идет у нас имя файла стилей, вторым путь к нему (с значением по умолчанию) и далее набор атрибутов. Поэтому, если нам требовалось ранее подключить некий файл стилей для компонента и задать ему определенный атрибут, то мы вызывали данный метод так:

JHTML::stylesheet('style.css','components/com_mycomponent/css/', array('media'=>'all'));

А вот в Joomla 1.7 сигнатура метода изменилась:

public static function stylesheet($file, $attribs = array(), $relative = false, $path_only = false, $detect_browser = true)

С одной стороны — это безусловно универсально, появилась возможность подключать условные CSS-файлы для текущего браузера, но потеряна совместимость с кодом, написанным для Joomla 1.5, ибо в новой версии функции у нас есть выбор — либо мы вторым параметром передаем строку, и тогда она интерпретируется как путь, либо это массив атрибутов, и то и другое сразу — не получится.

Есть ли универсальное решение данной проблемы? Есть — отказаться от использования JHTML::stylesheet и вместо этого пользоваться методом addStylesheet класса JDocument — его сигнатура не менялась. В результате, тот же самый функционал достигается кодом:

$document = JFactory::getDocument();
$document->addStylesheet('components/com_mycomponent/css/style.css', 'text/css', null, $attribs);

Вот и все, теперь данный код будет работать одинаково в Joomla 1.5 и Joomla 1.7).

Источник: joomlaportal.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи