Визначення браузера в joomla 3, блог суворого джумлавода

При розробці останнього модуля виникла необхідність отримання інформації яким саме браузером користується поточний відвідувач сторінки, а також його повної UserAgent рядку. З причини того, що Joomla 3 з версії 3.4.7 перестала зберігати такі дані в mysql таблиці _session, довелося покопати вбудовані класи Joomla 3. Як виявилося, все досить просто. Як завжди, даний матеріал створений, щоб бути під рукою в разі, коли знову з'явиться необхідність, ну і, можливо, буде корисний тим, хто спантеличений цим питанням сьогодні. Опис вбудованих класів визначення браузера в Joomla 3, як з ними працювати, а також кілька прикладів під катом цього поста.

Отримати дані про поточний браузері користувача в Joomla можна за допомогою 2 різних класів: JBrowser і JApplictionWebClient. Останній надає мізерні дані, тому сьогодні будемо розглядати можливості класу JBrowser.

1. JBrowser клас в Joomla 3

Клас JBrowser входить в підклас Environment, який в свою чергу є частиною основної бібліотеки Joomla 3. Для того, щоб скористатися класом JBrowser для початку потрібно його підключити, точніше імпортувати в вашому модулі \ плагін \ компоненті. Робиться це в такий спосіб:

Після чого можна задати в змінну об'єкт класу JBrowser за допомогою наступного рядка:

1. Тепер з змінної можна отримати деякі корисні дані. Для початку можна висмикнути UserAgent рядок браузера:

На що браузер повинен нам відповісти що-небудь на зразок:

2. Можна не париться визначати браузер по рядку UserAgent, а відразу отримати тип браузера через метод getBrowser ();

Після чого у відповідь отримаємо щось типу:

3. Без зайвих маніпуляцій модно визначити версію браузера поточного користувача. Для цього нам допоможуть відразу 3 методу: getMajor (), getMinor (), getVersion (). Припустимо у мене браузер Chrome версії 47.0.2526.106 m.

Метод getMajor () отримує частину версії браузера до першої точки. Тобто у відповідь видає просто рядок:

Метод getMinor () отримує наступну частину версії браузера до другої точки. Тобто у відповідь він мені видає просто - 0.

Метод же getVersion () повертає нам версію браузера до другої точки, тобто в моєму випадку:

4. Стандартними методами класу можемо також визначити платформу операційної системи, на якій працює поточний браузер користувача. Отримати її можна використовуючи метод getPlatform ();

У відповідь Joomla 3 нам видасть тільки один варіант з трьох: це 'win', 'mac' or 'unix'.

Якщо попередні методи повертали нам у відповідь будь-яку рядок, то такі методи будуть відповідати нам тільки так чи ні.

5. Метод isBrowser () дозволяє визначити, чи є поточний браузер користувача таким же, який ми хочемо знайти. Наприклад, у мене браузер chrome, і якщо я хочу щоб саме при використанні браузерів chrome користувачі побачили якусь повідомлення, то можна використовувати наступний код:

Або припустимо нам потрібно довантажити додатковий сss стиль якщо браузер є Осликом з версією нижче 7й:

6. Метод isMobile () дає нам можливість дізнатися заздалегідь, чи є поточний браузер користувача мобільним. Запитаємо у Joomla, чи є браузер мобільним, якщо так - то видаємо повідомлення:

7. У класі JBrowser присутня функція визначення інтернет ботів в Joomla 3. Вона лягла в основу методу isRobot (). Даний метод проводить перебір по своїй невеликій базі ботів, що складається з 40 сигнатур. Даний метод не визначає ім'я бота, він просто шукає в useragent сигнатуру зі своєї бази. Якщо знаходить - то повертає true.

8. Кому потрібно можна визначити чи є поточне з'єднання захищеним SSL чи ні за допомогою наступного методу:

9. А також зовсім, напевно, не потрібний метод визначає версію http протоколу сервера:

10. Ще є можливість визначити, чи може поточний браузер відображати файли певного типу. Наприклад, визначимо чи може браузер показувати нам adobe flash файли:

Список mime-типів для перевірки можна знайти в вікіпедії.

Корисні матеріали по темі:

Корисний матеріал? Підтримай наш блог - лайкні в соцмережі!