Zur Erkennung von mobilen Geräten bedient sich Gambio der Opensource-Klasse "Mobile_Detect.php". Diese prüft anhand von vorgegebenen Modellnummern und Betriebssystemmnamen mit Hilfe des "User-Agent"-Strings, den die Browser an PHP übermitteln, ob das aktuelle Gerät, das den Shop aufruft, ein Smartphone oder Tablett ist. Da ja dauernd neue mobile Geräte auf den Markt kommen, müssen diese Erkennungsparameter immer aktuell sein, damit die Erkennung funktioniert. Die Opensource-Klasse "Mobile_Detect.php" wird weitestmöglich von einer Community aktuell gehalten. Um hier aktuell zu bleiben, habe ich ein kleines (updatesicheres) Modul entwickelt, das ein Mal pro Tag prüft, ob es eine neuere "Mobile_Detect.php"-Klasse gibt, als die derzeit vorhandene. Und diese aktualisiert, falls notwendig. Den Inhalt des beigefügten Archivs in die Shop-Root kopieren. Um die Funktion zu aktivieren, in "admin/includes/configure.php" PHP: define('USE_MOBILEDETECT_UPGRADE',true); einfügen. Wie immer gilt: Anwendung auf das ausschließliche Risiko des Shopbetreibers. Es gibt keinerlei Gewährleistung. Erst in einem Testshop testen. Cache leeren.
Hi, auf Linux-Servern dürfte das nur funktionieren, wenn der Ordner system/data mittels FTP-User 777-Rechte bekommt. Wenn ich mich jetzt nicht täusche, liegt ab der Shopversion 2.1 die Mobile_Detect.php nicht im system/data-Ordner.
Eine neue Version, die für v2.0, v2.1 und v2.2 gilt. Folgenden Code als PHP: user_classes\overloads\AdminApplicationTopExtenderComponent\pt_mobiledetect_upgrade_AdminApplicationTopExtender.inc.php abspeichern. (Eine Zeile, ohne Umbruch!) Verzeichnis "system/classes/mobile/" mit Recht 777 versehen (ab v2.1.x) Verzeichnis "system/data/" mit Recht 777 versehen (v2.0.x) In "admin/includes/configure.php" einfügen: PHP: define('USE_MOBILEDETECT_UPGRADE',true); PHP: <?php/* --------------------------------------------------------------pt_mobiledetect_upgrade_AdminApplicationTopExtender.inc.php 2014-12-10 AvengerCopyright (c) 2014 Avenger, entwicklung@powertemplate.deCheck for updates of "Mobile_Detect.php" classThis class is used to detect mobile devices based on headers and/or user agent stringsReleased under the GNU General Public License (Version 2)[http://www.gnu.org/licenses/gpl-2.0.html]--------------------------------------------------------------*/class pt_mobiledetect_upgrade_AdminApplicationTopExtender extends pt_mobiledetect_upgrade_AdminApplicationTopExtender_parent{ function proceed() { parent::proceed(); if (USE_MOBILEDETECT_UPGRADE===true && !$_SESSION['MOBILEDETECT_UPGRADE_CHECKED']) { $force_mobiledetect_upgrade=$_GET['force_mobiledetect_upgrade']=='true'; //debugbreak(); if ($force_mobiledetect_upgrade) { $check_for_update=true; } else { $update_date_today=date('Y-m-d'); $mobiledetect_upgrade_date_text='MOBILEDETECT_DATE'; $mobiledetect_upgrade_version_text='MOBILEDETECT_UPGRADE_VERSION'; $mobiledetect_available=defined($mobiledetect_upgrade_date_text); if ($mobiledetect_available) { $today=time(); $last_update_date=strtotime(@constant($mobiledetect_upgrade_date_text)); $next_update_date=strtotime("+1 day",$last_update_date); $check_for_update=$today>=$next_update_date; } else { $check_for_update=true; } } if ($check_for_update) { $ctx = stream_context_create(array( 'http' => array( 'timeout' => 5 ) ) ); $mobiledectect_class=file_get_contents('https://raw.githubusercontent.com/serbanghita/Mobile-Detect/master/Mobile_Detect.php',false,$ctx); if ($mobiledectect_class) { $mobiledectect_class=trim($mobiledectect_class); if ($mobiledectect_class) { $_SESSION['MOBILEDETECT_UPGRADE_CHECKED']=true; //Check version number of class $version_match=preg_match('/@version(.+)/',$mobiledectect_class,$matches); if ($version_match) { $version=trim($matches[1]); $mobiledetect_upgrade_version=@constant($mobiledetect_upgrade_version_text); //Actual version > active version? if ($version>$mobiledetect_upgrade_version) { $mobiledectect_class=str_replace('|272|','|',$mobiledectect_class); //Eliminate pattern, which detects Chrome-Version as smartphone. $file=DIR_FS_CATALOG.'system/classes/mobile/Mobile_Detect.php'; if (!file_exists($file)) { $file=DIR_FS_CATALOG.'system/data/Mobile_Detect.php'; } if (is_writable($file)) { $old_file=str_replace('.php','_bak.php',$file); @unlink($old_file); @rename($file,$old_file); file_put_contents($file,$mobiledectect_class); } //Mark day as checked.... if ($mobiledetect_available) { $date_value='last_modified'; $sql_function='update'; } else { $date_value='date_added'; $sql_function='insert'; $where=''; } $configuration_key='configuration_key'; $update_keys=array($mobiledetect_upgrade_date_text,'MOBILEDETECT_UPGRADE_VERSION'); $update_data=array($update_date_today,$version); foreach ($update_keys as $index=>$key) { $sql_array=array('configuration_value'=>$update_data[$index]); if ($mobiledetect_available) { $where=$configuration_key."='$key'"; } else { $sql_array[$configuration_key]=$key; } $sql_array=array_merge($sql_array, array($date_value=>'now()')); $res=xtc_db_perform(TABLE_CONFIGURATION,$sql_array,$sql_function,$where); } } } } } } } }}