PHP Třída na detekci zařízení

Wed, 27 Apr 2016 21:49:25 +1100

V sérii předchozích článků na téma YouTube videa jsem několikrát referoval na správnou detekci zařízení. Nic totiž nelze cílit se stoprocentní přesností jenom pomocí @media query, proto je dobré nasadit na responzivní weby i silnější kalibr. Tím samozřejmě myslím PHP knihovnu, která správně určí vstupní zařízení, na kterém se momentálně uživatel nachází. A jedno takové řešení vám dnes představím.

Než jsem našel tu správnou knihovnu, strávil jsem nějaký čas na Googlu. Nakonec se ukázalo, že žádná jiná pořádně ani neexistuje. Tedy pokud chceme kvalitní produkt, jehož vývoj stále pokračuje. Autor knihovnu průběžně aktualizuje, což je v případě detekce zařízení nejdůležitější aspekt. Dovolte mi, abych vám představil Mobile Detect Library.

Mobile Detect Library
mobiledetect.net

Nasazení si můžete nastudovat na uvedeném odkazu, pro snazší porozumění uvedu příklad i zde.

include_once('libs/detect/detect.php');
if (Detect::isTablet()) {
	$device = 'tablet';
} elseif (Detect::isMobile()) {
	$device = 'mobile';
} else {
	$device = 'desktop';
}

<body class="<?=$device;?>">

Je to opravdu takhle jednoduché. Jenom na jeden malý zádrhel si musíme dávat pozor: metoda Detect::isMobile vrací true i v případě tabletu, proto je nutné dodržet dané pořadí, chceme-li tato dvě zařízení odlišit. Je to vlastně uvedené i na hlavní stránce projektu.

Pak už stačí jen vytisknout proměnnou do třídy nebo a ve stylech můžeme krásně cílit zařízení. Stejně tak v JavaScriptu, kde stačí otestovat element na přítomnost třídy "mobile" respektive "tablet".

if ($('body.mobile').length) {
	// tento blok proběhne pouze na telefonu
}

Třída funguje krásně, nedostatkem může být nejpspíš jen špatná rychlost jednotlivých metod. Pořád je to regulár za regulárem, což chvíli trvá a urychlit to příliš nelze. U mě na webu detekce vezme nějakých 0,02 sekundy, což se nemusí zdát až tak moc, ale pro srovnání - stejně dlouho mi trvá hlavní SQL dotaz na články, ve kterém spojuji víc jak 4 tabulky dohromady...

Každopádně nic lepšího asi neexistuje, a tak si musíme vystačit s tím, co máme zadarmo. A bez práce. Mně detekce slouží dobře: k čemu přesně ji využívám, si řekneme v dalším dílu seriálu "Co jsem dnes udělal pro svůj web".