====== User-Agent ====== Seit der Release r429 können im Template mit IF Statements entsprechend der Ausgabe des User-Agenten Unterscheidungen getroffen werden. ACHTUNG: Es wird empfohlen in diesem Zusammenhang (mindestens) die r452 zu verwenden da einige Unklarheiten bis dorthin beseitigt wurden. Hier wird eine kleines Testscript vorgestellt, mit dem es möglich ist die Werte des User-Agenten und die daraus resultierenden Ergebnisse aus den verschiedenen ##%%Do that%%## Abfragen darzustellen. Hierzu wird die unten gezeigte php-Datei im Verzeichnis %%/frontend_render/..%% installiert. Die Ansteuerung übernimmt der TAG **{IF-UAG}** oder **{IF-UAG:X:Y}** wobei X den Abstand vom linken -und Y den Abstand vom oberen Browserrand für die Ausgabe angeben. \\ Z.B.: * **{IF-UAG}** //(X/Y -Positionswerte im Script)// . * **{IF-UAG:200:25}** //(200px in X -und 25px in Y-Richtung)//. \\ Der TAG sollte möglichst am Anfang oder am Ende außerhalb des äußeren div-Containers platziert werden. Die php-Datei kann im Bereich der IF-Abfragen nach eigenen Vorstellungen angepasst werden. In dieser ersten Übersicht sind alle möglichen IF Abfragen mit einfachen Werten enthalten. Die negierten Abfragen sind nicht eingepflegt. \\ ===== Voraussetzung: ===== **conf.inc.php:** $phpwcms['render_device'] = 1; // allow user agent specific rendering templates DoMobileDoNotMobileDefault \\ ===== Anwendung: ===== **%%....%%** oder die Negation: **%%....%%** **mobile** - All Mobile
**desktop** - All Desktop
**platform:** WinPhone, WinCE, Win, iOS, Mac, GoogleTV, Android, BlackBerry, WebOS, Linux, Unix, Symbian, Other - Platform Win PC
- Platform Mac PC
- Platform Win und Mac PC
**device:** Default, Other, Smartphone, Tablet, Desktop, TV - Device Default
- Device Smartphone
- Device Tablet
- Device Desktop
- Device TV
**browser:** Other, Firefox, Chrome, Safari, IE, IEMobile, Opera, Mozilla - Browser Other
- Browser Firefox
- Browser Chrome
- Browser Safari
- Browser IE
- Browser IEMobile
- Browser Opera
- Browser Safari
**engine:** Gecko, Other, WebKit, Opera, KHTML, IE - Engine Gecko
- Engine Other
- Engine WebKit
- Engine Opera
- Engine KHTML
- Engine IE
**version** - Version No 531
**default** - Not Default
\\ ===== Ausgabebeispiele: ===== === Desktop: === {{ :deutsch:andere-erweiterungen:tools:uag_mac-desktop_1.gif|}} {{:deutsch:andere-erweiterungen:tools:uag_win-desktop_1.gif|}} {{:deutsch:andere-erweiterungen:tools:uag_linux-desktop_1.gif|}} === Tablets: === **Seit der Version 1.5 (R452) wird tablet nicht mehr als "mobile" ausgegeben.** {{ :deutsch:andere-erweiterungen:tools:uag_android-tablet_1.gif|}} {{:deutsch:andere-erweiterungen:tools:uag_ios-tablet_1.gif|}} === Smartphones: === {{ :deutsch:andere-erweiterungen:tools:uag_android-smartphone_1.gif|}} {{:deutsch:andere-erweiterungen:tools:uag_ios-smartphone_1.gif|}} {{:deutsch:andere-erweiterungen:tools:uag_winphone-smartphone_1.gif|}} \\ ===== PHP Script: ===== **Sehr einfache Methode:** \\ Die Werte des User-Agenten direkt auslesen: dumpVar(phpwcms_getUserAgent()); \\ **Komfortables Script:** **Datei:** template/inc_script/frontend_render/rt_test_if_user_agent.php IF-Statement
'.LF; // ************************************************************************* // Geasmmelte IF Abfragen: Editierbarer Bereich // ************************************************************************* // ************************************************************************* // mobile $_if .= ' - All Mobile
'; // desktop $_if .= ' - All Desktop
'; // platform: WinPhone, WinCE, Win, iOS, Mac, GoogleTV, Android, BlackBerry, WebOS, Linux, Unix, Symbian, Other $_if .= ' - Platform Win PC
- Platform Mac PC
- Platform Win und Mac PC
'; // device: Default, Other, Smartphone, Tablet, Desktop, TV $_if .= ' - Device Default
- Device Smartphone
- Device Tablet
- Device Desktop
- Device TV
'; // browser: Other, Firefox, Chrome, Safari, IE, IEMobile, Opera, Mozilla $_if .= ' - Browser Other
- Browser Firefox
- Browser Chrome
- Browser Safari
- Browser IE
- Browser IEMobile
- Browser Opera
- Browser Safari
'; // engine: Gecko, Other, WebKit, Opera, KHTML, IE $_if .= ' - Engine Gecko
- Engine Other
- Engine WebKit
- Engine Opera
- Engine KHTML
- Engine IE
'; // version $_if .= ' - Version No 531
'; // default $_if .= ' - Not Default
'; // ************************************************************************* // ************************************************************************* // ----------------------------------------------------- // Fenster-Ausgabeposition festlegen: {IF-UAG:X:Y} // ----------------------------------------------------- $_left = '200px'; // X px $_top = '10px'; // Y px preg_match('/\{IF-UAG:(.*?):(.*?)\}/', $content['all'], $_matches); if (isset($_matches[1])) $_left = $_matches[1].'px'; // x Position if (isset($_matches[2])) $_top = $_matches[2].'px'; // y Position // ----------------------------------------------------- // User Agent abholen // ----------------------------------------------------- //dumpVar(phpwcms_getUserAgent()); $_userAgent = phpwcms_getUserAgent(); // ----------------------------------------------------- // Ausgabeformat festlegen // ----------------------------------------------------- $_pos_all = '
'; $_pos_uAg = '
'; $_pos_if = '
'; // ----------------------------------------------------- // Output User-Agent // ----------------------------------------------------- $_uAg_Outp = 'User-Agent
'.LF; foreach ($_userAgent as $_key=>$_value) { $_uAg_Outp .= '
['.$_key.']
=> '.$_value.'
'.LF; } $_uAg_Outp .= '
'.LF; $content['all'] = preg_replace('/\{IF-UAG\}/', $_pos_all.$_pos_uAg.$_uAg_Outp.'
'.$_pos_if.$_if.'
', $content['all'] ); $content['all'] = preg_replace('/\{IF-UAG:.*?:.*?\}/', $_pos_all.$_pos_uAg.$_uAg_Outp.''.$_pos_if.$_if.'', $content['all'] ); } ?>
\\ \\ ====== Extrahieren der OS Version von iOS ====== ==== Version 1.0 ==== Verwendung innerhalb des CMS z.B.: iOS Version3 iOS Version4 \\ **Einfaches Script:** abgeleitet von -> [[http://stackoverflow.com/questions/7768324/detect-ios-version-with-php|Detect iOS version with PHP]] **Datei:** template/inc_script/**frontend_init**/rt_iOS_OS_user_agent.php iOS_V4, iOS_V5, iOS_V6 * * In CMS e.g.: * iOS Version3 * iOS Version4 * * File: template/inc_script/frontend_init/rt_iOS_OS_user_agent.php * ********************************************************************/ // ------------------------------------------------------------------------------------------- // obligate check for phpwcms constants if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");} // ------------------------------------------------------------------------------------------- // Example USER-AGENT iOS // -------------------------------------------------------- // Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5 // Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5 // -------------------------------------------------------- if ($GLOBALS['phpwcms']['USER_AGENT']['platform'] == 'iOS') { $os_vers = preg_replace("/(.*) OS ([0-9]*)_(.*)/","$2", $_SERVER['HTTP_USER_AGENT']); $GLOBALS['phpwcms']['USER_AGENT']['platform'] = $GLOBALS['phpwcms']['USER_AGENT']['platform'].'_V'.$os_vers; } ?> \\ An die Ausgabe der Plattform wird einfach die iOS-Version angehängt, bei einem Smartphone oder Tablet unter iOS 5 wird z.B. aus **iOS** -> **iOS_V5**. Bitte prüfen beim iPod und älteren iOS-Versionen. \\ ==== Version 1.1 ==== Es wird gegen iOS-Versionen größer 5 geprüft. Verwendung innerhalb des CMS z.B.: iOS Version x - 5 iOS Version6 \\ **Einfaches Script:** abgeleitet von -> [[http://stackoverflow.com/questions/7768324/detect-ios-version-with-php|Detect iOS version with PHP]] **Datei:** template/inc_script/**frontend_init**/rt_iOS_OS_user_agent.php iOS, iOS_V6 *Enhanced V1.1: Only if iOS V6 is used, the if statement is extended. * * * In CMS e.g.: * iOS Version x - 5 * iOS Version6 * * File: template/inc_script/frontend_init/rt_iOS_OS_user_agent.php * ********************************************************************/ // ------------------------------------------------------------------------------------------- // obligate check for phpwcms constants if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");} // ------------------------------------------------------------------------------------------- // Example USER-AGENT iOS // -------------------------------------------------------- // Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5 // Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5 // -------------------------------------------------------- if ($GLOBALS['phpwcms']['USER_AGENT']['platform'] == 'iOS') { $os_vers = preg_replace("/(.*) OS ([0-9]*)_(.*)/","$2", $_SERVER['HTTP_USER_AGENT']); if (((int) $os_vers) == $os_vers) // Integer ? if ($os_vers > 5) $GLOBALS['phpwcms']['USER_AGENT']['platform'] .= '_V6'; } ?> \\ An die Ausgabe der Plattform wird bei Verwendung von iOS6 einfach _V6 angehängt (**iOS** -> **iOS_V6**). Alle tieferen iOS-Versionen haben keinen Einfluss. Bitte prüfen beim iPod und älteren iOS-Versionen. \\