Печать
Просмотров: 4351

Рейтинг: 2 / 5

Звезда активнаЗвезда активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Иногда бывает ситуация, когда нужно определить какой браузер у посетителя нашего сайта. Для этого в Joomla существует класс JBrowser, предоставляющий информацию о текущем веб-клиенте.  Идентификация браузера выполняется путем изучения переменной среды сервера HTTP_USER_AGENT.

Как это работает?

Да очень просто. Для использования нужно получить экземпляр класса JBrowser через JBrowser::getInstance();.

Таким образом мы получим объект содержащий информацию о браузере. Рассмотрим на деле, несколько вариантов использования данного класса и воспользуемся несколькими полезными его методами.

На своем сайте я добавил определение браузера пользователя, так же проверку не является ли он роботам и не зашел ли он с мобильного устройства. Для всего этого нам понадобится немного кода. В шаблон вашего сайта до вывода HTML добавьте следующие строки:

// Создаем экземпляр JBrowser
$browser = JBrowser::getInstance();

// Получаем название браузера
$browserName = $browser->getBrowser();
// Проверяем не является ли клиент известным роботом
$browserIsRobot = $browser->isRobot();
// Смотрим не мобильный ли браузер
$browserIsMobile = $browser->isMobile();

// Проверяем все необходимые нам условия, и если что-то не так выводим сообщение на страницы
if ($browserName !== 'dchrome' and $browserName !== 'mozilla' and !$browserIsRobot and !$browserIsMobile){
	$browserMessage = "<strong>Ваш браузер $browserName</strong>. Для корректного серфинга сети рекомендуем установить один из современных браузеров <a target='_blank' href='https://www.google.com/chrome/browser/index.html'>Chrome</a> или <a target='_blank' href='https://www.mozilla.org/ru/firefox'>Firefox</a>.";
	$app->enqueueMessage("$browserMessage", 'Notice');
}

Выводить сообщения на страницы можно  используя конструкцию 

$app->enqueueMessage('Ваше сообщение', 'Тип'); 

где  $app - это объект JApplication, а enqueueMessage - это его метод для добавления сообщений на страницу, которому передается два параметра: само сообщение и тип выводимого сообщения (Message - зеленое сообщение, Notice - синее, Warning желтое  и Error). В качестве первого аргумента (Сообщения) я передал переменную $browserMessage, в которую заранее сформировал тело сообщения.

Для использования enqueueMessage убедитесь, что у вас создан соответствующий объект, обычно в шаблонах Joomla он создается строкой 

$app = JFactory::getApplication();

в начале шаблона. Или используйте полную конструкцию в виде

JFactory::getApplication()->enqueueMessage('Ваше сообщение', 'Тип');

Так же можно добавлять сообщения используя конструкцию 

JError::raiseWarning( 100, 'Ваше сообщение' );

Но начиная с Joomla 3x и перехода Joomla на Bootstrap более предпочтительно использовать первый способ.

Да прибудет с вами сила!

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter