Extension:MobileFrontend/Tarayıcı otomatik algılamayı yapılandırma

From mediawiki.org
Jump to navigation Jump to search
This page is a translated version of the page Extension:MobileFrontend/Configuring browser auto-detection and the translation is 100% complete.
Other languages:
English • ‎Türkçe • ‎français • ‎русский • ‎中文 • ‎日本語

Bu belge, bir site hizmetlisinin MediaWiki uzantıları için bir mobil siteyi nasıl etkinleştirebileceğini açıklar, böylece bir kullanıcı siteyi bir mobil cihazdan ziyaret ettiğinde, masaüstü görünümü yerine otomatik olarak mobil görünüme yönlendirilir.

Dahili otomatik algılama

5a1867e taahhüdü itibariyle, MobileFrontend minimum yapılandırma ile otomatik cihaz algılamayı destekler.

Yapmanız gereken tek şey LocalSettings.php içinde

$wgMFAutodetectMobileView = true;

ayarlamaktır.

Bu en kolay yöntem olsa da, neredeyse kesinlikle en az performans gösteren yöntem olacaktır. Önbelleğinizin bir mobil görünüm ile masaüstü görünümü arasındaki farkı bilmesine olanak sağlamadığından, bu çözüm ön uç önbelleğe alma ile uyumlu DEĞİLDİR.

Apache Mobil Filtresi (AMF)

MobileFrontend, 0fb2c72d taahhüdünden itibaren cihaz algılaması için Apache Mobil Filtresini (AMF) destekler. Apache web sunucusunu kullanıyor olmalısınız. AMF'nin kurulumu/yapılandırması için talimatları izleyin ve "şimdi çalışmalıdır". Bu, yerleşik otomatik algılamaya çok benzer şekilde çalışır ve özel yapılandırma olmadan ön uç önbelleğe alma ile uyumlu olmayacaktır.

Web sunucusu/proxy-önbellek cihazı algılama

Bazı ters proxy'ler (Varnish gibi) MediaWiki'ye mobil sürümünü gerekli olup olmadığını bildirebilir, böylece önbellek dostu bir otomatik algılama oluşturur.

Varnish kullanarak algılama: başka bir etki alanındaki mobil site

Varnish kullandığımızı ve masaüstü sürümünü göstermek için wiki.example.com ve mobil sürümü göstermek için m.wiki.example.com istediğimizi varsayalım. İşte bunu nasıl yapacağınız.

sub vcl_recv {
	remove req.http.x-wap; # İstekte bulunan kişinin keyfi X-WAP başlığı sağlamasına izin verilmemelidir
	if (req.http.host == "m.wiki.example.com") { # mobil alanı
		set req.http.host = "wiki.example.com"; # masaüstü alanı
		set req.http.x-wap = "no";
	}
}
sub vcl_hash {
	# Sayfaların mobil sürümünü ayrı olarak önbelleğe alın.
	#
	# NOT: x-wap başlığının yalnızca bir değeri olmalıdır (varsa), bu nedenle vcl_recv(), kullanıcı tarafından sağlanan X-WAP başlığını kaldırmalıdır.
	hash_data(req.http.x-wap);
}

LocalSettings.php şunları içermelidir:

$wgMobileUrlTemplate = 'm.wiki.example.com'; // mobil site için alan

Çok sayıda vikiniz varsa, aşağıdaki gibi sözdizimini kullanmak uygun olabilir:

$wgMobileUrlTemplate = '%h0.m.%h1.%h2';

"%h<#>", $server ana bilgisayar adının bir kesimiyle eşleşir. Bu yüzden, $wgServer = 'en.wikipedia.org'; ise, %h0, "en" olur, %h1, "wikipedia" olur, %h2, "org" olur. Bu göz önüne alındığında, yukarıdaki $wgMobileUrlTemplate, mobil URL'nizi otomatik olarak "en.m.wikipedia.org" olarak yorumlayacaktır. Bu, özellikle WMF ve <dil kodu>. Wikipedia.org şablonunu izleyen Vikipedi gibi projeler için kullanışlıdır, bu nedenle mobil alan adı her zaman <dil kodu>.m.wikipedia.org gibi görünecektir.

Bu çözümde, yerleşik otomatik algılama devre dışı bırakılmalıdır ($wgMFAutodetectMobileView = false;), böylece MediaWiki, Varnish'in kararlarını sorgulamaz.

Varnish kullanarak algılama: masaüstü/mobil site için aynı alan adı

Varnish kullandığımızı ve wiki.example.com aynı URL'lerde masaüstü/mobil sürümü göstermesini istediğimizi varsayalım ("m.wiki.example.com" gibi ek alanlar oluşturmadan). İşte bunu nasıl yapacağınız.

sub vcl_recv {
	remove req.http.x-wap; # İstekte bulunan kişinin keyfi X-WAP başlığı sağlamasına izin verilmemelidir
	if(req.http.User-Agent ~ "(?i)^(lg-|sie-|nec-|lge-|sgh-|pg-)|(mobi|240x240|240x320|320x320|alcatel|android|audiovox|bada|benq|blackberry|cdm-|compal-|docomo|ericsson|hiptop|htc[-_]|huawei|ipod|kddi-|kindle|meego|midp|mitsu|mmp\/|mot-|motor|ngm_|nintendo|opera.m|palm|panasonic|philips|phone|playstation|portalmmm|sagem-|samsung|sanyo|sec-|sendo|sharp|softbank|symbian|teleca|up.browser|webos)") {
		set req.http.x-wap = "no";
	}

	if(req.http.Cookie ~ "mf_useformat=") {
		# Bu, kullanıcının altbilgideki "Mobil görünümü" değiştir bağlantısını tıkladığı anlamına gelir.
		# vcl_hash() ile bunun mobil sayfa olarak önbelleğe alınması gerektiğini bildirin.
		set req.http.x-wap = "no";
	}
}
sub vcl_hash {
	# Sayfaların mobil sürümünü ayrı olarak önbelleğe alın.
	#
	# NOT: x-wap başlığının yalnızca bir değeri olmalıdır (varsa), bu nedenle vcl_recv(), kullanıcı tarafından sağlanan X-WAP başlığını kaldırmalıdır.
	hash_data(req.http.x-wap);
}
Bu çözümde, yerleşik otomatik algılama etkinleştirilmelidir (önbelleği etkilemez):
$wgMFAutodetectMobileView = true;

Aksi takdirde, MobileFrontend hatalı davranışlar sergiler ($wgMobileUrlTemplate ayarlamazsak, X-WAP başlığını yok sayar, yaparsak, "altbilgideki bağlantıları Mobil görünümü değiştir" için "useformat" çerezleri ayarlamaz).