Page 1 of 2
[OPGELOST] Mobile Detect - Mobiele website
Posted: Thu Feb 14, 2013 9:44 am
by brentnl
Ik heb een scriptje gevonden om een mobile browser te detecteren met daarbij de optie om middels een cookie te switchen tussen desktop/mobiele versie van de website.
Echter krijg ik dit middels een UDT niet werkend op de site.
Code: Select all
if (isset($_COOKIE['nomobile'])) {
$version = "desktop";
} else {
if (preg_match('/iPhone|(...etc...)/', $_SERVER['HTTP_USER_AGENT'])) {
$version = "mobile";
}
if ($version == "mobile") {
header('Location: http://yourwebsite.com/mobile');
}
En dan moet er ook nog een linkje komen om te switchen tussen mobiel en desktop. Daar is deze code voor, maar ik weet niet goed hoe ik dat moet gebruiken.
Code: Select all
<?php
setcookie('nomobile', 'true');
header('Location: http://yourwebsite.com');
?>
Re: Mobile Detect - Mobiele website
Posted: Sat Feb 16, 2013 2:17 pm
by brentnl
Het script kwam van
deze en
deze pagina af.
Het mag ook een ander script zijn, als ik mensen maar automatisch door kan laten verwijzen naar een mobiele variant van de website + ze de optie kan geven (middels een sessie/cookie etc) om toch de desktop-versie te zien.
Re: Mobile Detect - Mobiele website
Posted: Sun Feb 17, 2013 9:27 am
by janvl
Re: Mobile Detect - Mobiele website
Posted: Mon Feb 18, 2013 7:52 am
by pasmaskas
Ik gebruik dit op een website.
Dit op desktop website in de <header> tag:
Code: Select all
<__script__ type="text/javascript" src="/mobiel.js"></__script>
<__script__ type="text/javascript">
if (!document.location.search.match(/\bfull=1\b/)) {
vSwitchToMobile("http://www.website.nl/mobiel");
}
</__script>
En dit in het "mobiel.js" bestandje dat je dan moet uploaden naar de root van je website.
Code: Select all
/**
* Test of de browser op een telefoon draait
*
* @returns boolean true = mobiel, false = geen mobiel
* @since 1.0.0 - 12 november 2012
* @auhtor http://www.mobile247.eu
*/
function bTestForPhone() {
var aSmartPhoneUserAgentStrings = new Array('iPhone', 'Nokia', 'MOT', 'Android', 'PalmSource', 'webOS', 'SAMSUNG', 'SonyEricsson', 'LG', 'HTC', 'BlackBerry', 'Windows Phone');
for (var i=0; i < aSmartPhoneUserAgentStrings.length; ++i ) {
var oRegularExpression = new RegExp(aSmartPhoneUserAgentStrings[i], "i");
if (navigator.userAgent.match(oRegularExpression)) return true;
}
return false;
}
/**
* Toont een alert als de gebruikte browser op een mobiele telefoon draait
*
* @param a_sMessageMobile de melding die getoond wordt indien een mobiel gedetecteerd wordt
* @param a_sMessageDesktop de melding die getoond wordt indien geen mobiel gedetecteerd wordt
* @since 1.0.0 - 12 november 2012
* @auhtor http://www.mobile247.eu
*/
function vAlertOnPhone(a_sMessageMobile, a_sMessageDesktop) {
if (bTestForPhone()) alert(a_sMessageMobile);
else alert(a_sMessageDesktop);
}
/**
* Schakelt over naar mobiel indien nodig
*
* @param a_sMobileDomain het domein van de mobiele website
* @since 1.0.0 - 12 november 2012
* @auhtor http://www.mobile247.eu
*/
function vSwitchToMobile(a_sMobileDomain) {
if (bTestForPhone()) document.location = a_sMobileDomain;
}
De link naar de mobiele website is dan
http://www.website.nl/mobiel en naar de desktop versie
http://www.website.nl/?full=1 dit moet je dan even wijzigen naar de juiste URL voor jou website. Allen in de terug link naar de desktop versie moet ?full=1 achter de url staan.
Het scriptje kijkt of je op een mobieltje/mobiele browser zit en schakelt over naar de mobiele website. Om te voorkomen dat hij die blijft doen zit er een soort rem in het script door "?full=1" er achter te zetten doet hij dat niet meer.
Re: Mobile Detect - Mobiele website
Posted: Mon Feb 18, 2013 9:01 am
by velden
Maar als ik het goed lees test dit stukje javascript het bij elke pagina opnieuw en slaat het niks op in een cookie ofzo.
Dus ik zou verwachten dat wanneer je met een mobiel device kiest voor de desktop-versie, je bij elke vervolgpagina toch weer op de mobiele site terecht komt.
Tenzij je een manier hebt om die 'full=1' dan op elke url te handhaven.
Re: Mobile Detect - Mobiele website
Posted: Mon Feb 18, 2013 9:16 am
by pasmaskas
Klopt idd. Ik heb het ook alleen op een plate html site getest. Je zou 2 templates aan kunnen maken die het zelfde zijn alleen 1 met het scriptje er in voor de homepage. In de html site staat hij ook alleen op de homepage zodat de andere pagina's niet reageren op het script en terug willen naar de mobiele site.
Re: Mobile Detect - Mobiele website
Posted: Mon Apr 08, 2013 2:06 pm
by brentnl
Sorry voor de (hele) late response..
Ik heb de
optie uit de 3e post verwerkt in m'n CMSMS installatie, maar nu heb ik een probleem bij het aanpassen van pagina's.
Code: Select all
@include("Mobile_Detect.php");
$detect = new Mobile_Detect();
if ($detect->isMobile() && isset($_COOKIE['mobile']))
{
$detect = "false";
}
elseif ($detect->isMobile())
{
header("Location:http://www.website.nl/mobile");
}
Ik heb van deze code een UDT gemaakt, en deze in een HTML blok gezet {detectmobile}, samen met de rest van de benodigde javascript (jquery, analytics). Als ik nu een pagina wil aanpassen krijg ik een blanco pagina te zien. Zodra ik de tag {detectmobile} eruit haal is er niets aan de hand.
Wat doe ik fout?
Re: Mobile Detect - Mobiele website
Posted: Mon Apr 08, 2013 2:10 pm
by velden
Wat is je cmsms versie?
Re: Mobile Detect - Mobiele website
Posted: Mon Apr 08, 2013 2:22 pm
by brentnl
CMS Made Simple™ 1.11.4 “Fernandina”
Re: Mobile Detect - Mobiele website
Posted: Mon Apr 08, 2013 3:06 pm
by velden
Sorry kan het niet meer vinden. Dacht dat er ooit gesproken was op dit forum over problemen met UDT's en de Admin. Weet het eigenlijk wel zeker.
Maar weet niet meer om welke versie het precies ging, dus kan ook niet zeggen of het met 1.11.5 opgelost is.
Re: Mobile Detect - Mobiele website
Posted: Mon Apr 08, 2013 3:36 pm
by brentnl
dit
probleem bedoel je?
Ja er iets mis met deze UDT inderdaad, maar ik heb te weinig verstand van PHP om te vinden wat. Met {stylesheet} oid is niets mis, dat gebruik ik ook niet.
Code: Select all
@include("Mobile_Detect.php");
$detect = new Mobile_Detect();
if (($detect->isMobile() && isset($_COOKIE['mobile'])) || $detect->isTablet())
{
$detect = "false";
}
elseif ($detect->isMobile())
{
header("Location:http://www.domein.nl/mobile");
}
Re: Mobile Detect - Mobiele website
Posted: Tue Apr 09, 2013 11:48 am
by brentnl
Heb nu geupgrade naar 1.11.5 en krijg ipv een blanco pagina nu deze error mbt die UDT.
Code: Select all
Fatal error: Class 'Mobile_Detect' not found in /home/deb60619n5/domains/website.nl/public_html/lib/classes/class.usertagoperations.inc.php(265) : eval()'d code on line 2
Re: Mobile Detect - Mobiele website
Posted: Tue Apr 09, 2013 11:58 am
by janvl
Probeer module toolbox eens die heeft ook mogelijkheden voor mobile-detect.
m.vr.g.
Jan
Re: Mobile Detect - Mobiele website
Posted: Tue Apr 09, 2013 12:01 pm
by brentnl
janvl wrote:Probeer module toolbox eens die heeft ook mogelijkheden voor mobile-detect.
m.vr.g.
Jan
Nja het hele mobile-detect werkt nu top, inclusief cookie en een link naar de volledige website. Echter kan ik nu geen pagina's aanpassen doordat die UDT dwars ligt (terwijl die wel werkt). Dus die UDT moet iets aangepast worden ofzo, .. heb alleen weinig verstand van PHP.
Re: Mobile Detect - Mobiele website
Posted: Tue Apr 09, 2013 6:42 pm
by janvl
Hier is de manier zoals ik het gebruik
in de template van de normale pagina in [head]:
Code: Select all
{* omleiden mobiele gebruiker naar pagina "mobil" *}
{if $smarty.get.useDesktop == "1" or $smarty.session.useDesktop == "1"} {*do nothing*}
{elseif ($tbmobile->isMobile())} {redirect_page page="mobil"}
{/if}
{* omleiden gebruiker met browservenster onder 960px naar pagina "mobil" *}
{literal}
<__script__ type="text/javascript">
<!--
$(document).ready(function(){ if($(window).width() < 960){ window.location.href = "http://www.taxigerhard.at/index.php?page=mobil" } });
//-->
</__script>
{/literal}
en in template van de mobiele pagina in [head]
Code: Select all
{tbSessionSet name="useDesktop" value="1"}
zo kun je weer met een link naar de volle Site.
Funktioneert zonder problemen.
Module Toolbox moet natuurlijk wel geinstalleerd zijn.
m.vr.gr.
Jan