При розробці останнього модуля виникла необхідність отримання інформації яким саме браузером користується поточний відвідувач сторінки, а також його повної 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-типів для перевірки можна знайти в вікіпедії.
Корисні матеріали по темі:
Корисний матеріал? Підтримай наш блог - лайкні в соцмережі!