Mengonfigurasi Desain "Pengecualian" String untuk Perangkat "Mobile"

16

Apa string Pengecualian "canggih" untuk mengarahkan ulang pengguna iPhone, iPad, Android, tablet, dll. Ke desain yang berbeda?

Artinya, saya sadar dalam

System -> Configuration -> Design

antarmuka pengguna, ada fitur yang memungkinkan saya untuk membuat ekspresi reguler yang cocok dengan string agen pengguna. Apa yang saya cari adalah string spesifik apa yang digunakan orang untuk mengalihkan komputer non-desktop ke tema seluler dan / atau respons yang berbeda?

Atau apakah ada pendekatan yang lebih baik daripada pendekatan "Pengecualian" untuk hari ini?

Alan Storm
sumber

Jawaban:

15

Ada dua versi berbeda yang telah kami gunakan. Yang pertama adalah yang sama yang @Marius menyebutkan minus "Fennec" spesifik ( yang tidak lagi dalam string UA dari FF Mobile). Saya mendapatkannya dari sumber serupa:

iPhone|iPod|BlackBerry|Palm|Googlebot-Mobile|Mobile|mobile|mobi|Windows Mobile|Safari Mobile|Android|Opera Mini

Yang kedua adalah sama, tetapi dengan istilah "Seluler" dihapus sehingga versi seluler suatu situs tidak disajikan ke iPad, yang mencakup Seluler dalam agen penggunanya. Apple bahkan menegaskan hal ini di TN2262 :

Safari di iPad mampu memberikan pengalaman web "desktop", dan pengguna akan mengharapkan pengalaman ini karena iPad memiliki layar besar dan konektivitas jaringan yang cepat. Jika Anda memiliki versi situs web Anda yang dioptimalkan untuk perangkat seluler dengan layar kecil, JANGAN melayani versi seluler ini untuk pengguna iPad.

...

Perhatikan bahwa string agen pengguna Safari di iPad berisi kata "Mobile", tetapi tidak mengandung kata "iPhone". Jika saat ini Anda menyajikan konten seluler ke browser apa pun yang mengidentifikasi diri sebagai "Seluler", Anda harus memodifikasi cek string agen pengguna Anda untuk mencari iPad dan menghindari mengirimkannya versi yang salah dari situs Anda.

Berdasarkan apa yang saya lihat di FF Mobile, menggunakan "Android" di string ini akan menyebabkan masalah jika Anda ingin tema desktop disajikan ke semua tablet (dan bukan hanya iPad) karena sudah diputuskan untuk memasukkannya ke dalam string UA karena berbagai alasan .

Saya jujur ​​tidak secara pribadi menguji cakupan string di atas. Saya tahu ini: Ini kekacauan yang rumit! :)

Catatan: Jika Anda mengatur ini pada EE 1.12 atau sebelumnya (belum memeriksa 1.13), Anda akan memerlukan tambalan dari Dukungan Magento agar FPC berfungsi dengan baik. Gagal memperhitungkan pengecualian desain dalam versi rilis.

Pembaruan 1:

Bug yang dicatat yang membutuhkan tambalan agar pengecualian desain berfungsi masih ada di EE 1.13.0.0 dan 1.13.1.0. Ada tambalan yang tersedia dari dukungan Magento dan itu ada dalam daftar masalah yang diketahui: SUPEE-1598

davidalger
sumber
Saya akan memeriksa 1,13 untuk Anda ... tapi ...
philwinkle
1
Saya dapat memeriksa dengan cukup mudah, saya terlalu malas saat ini. :)
davidalger
Dalam semua keseriusan, ini adalah daftar yang cukup lengkap. +1.
philwinkle
@davidalger, saya telah menggunakan ungkapan pertama (Anda sebutkan). Sekarang bagaimana cara menampilkan situs desktop di semua tablet, ipad, ipad mini? karena mereka semua menunjukkan tema seluler.
Kishore Patra
di mana saya meletakkan string ini untuk mengarahkan kembali perangkat seluler ke www.m.myDOMAIN.com untuk perangkat seluler? Magento 1.9.1
Allysin
7

Saya telah menambahkan 2 pengecualian desain, satu untuk tablet, yang untuknya saya melayani tema desktop dan satu untuk ponsel, untuk mana saya melayani tema ponsel saya. Saya menambahkan pengecualian yang menargetkan tablet terlebih dahulu, lalu pengecualian yang menargetkan ponsel

Tablet

iPad|Silk|Kindle|Xoom|SCH-I800|Tablet|GT-P10|SC-01C|SHW-M180S|SGH-T849|SCH-I800|SHW-M180L|SPH-P100|SGH-I987|zt180|HTC(.Flyer|\\_Flyer)|Sprint.ATP51|ViewPad7|pandigital(sprnova|nova)|Ideos.S7|Dell.Streak.7|Advent.Vega|A101IT|A70BHT|MID7015|Next2|nook|Windows NT|DROID RAZR

Telepon

android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|iP(hone|od)|iris|kindle|lge |maemo|meego.+mobile|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|(Android.+Mobile)|NOKIA|SymbianOS|N900|BlackBerry|Mobile

Ini berfungsi hampir 100% seperti yang diharapkan, saya harus memberikan kredit, dan terima kasih banyak untuk beeplogic siapa regex yang saya gunakan sebagai yayasan saya, Terima kasih beep!

pengguna2965205
sumber
1
Saya tahu ini sudah tua tetapi hanya ingin memperhatikan bahwa Ipad juga menggunakan string Mobile sehingga Anda harus menghapusnya dari daftar ponsel
Toon Van Dooren
1

Ini yang saya gunakan:

android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|meego.+mobile|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino
beeplogic
sumber
0

Saya memiliki kebutuhan khusus untuk memfilter versi perangkat Android tertentu. Pendekatan serupa dapat digunakan untuk menyaring versi iOS.

Contoh berikut cocok dengan iPad, iPhone dan semua Android kecuali versi "2. *", "3. *", "4.0 *"

iPad|iPhone|Android ((?!(2\.|3\.|4\.0)).)

Itu menggunakan lookaround negatif, lihat penjelasannya di sini .
Perhatikan bahwa mencoba meniru "> 2.3" tidak akan berfungsi di regex, tetapi perlu solusi seperti contohnya.
Sumber yang bagus untuk menguji pencocokan regex pada string online adalah Rubular

Tomg
sumber