Mobil sminkre váltás

pero képe

Üdv!

Több napi kínlódás árán sem voltam képes egy meglehetősen egyszerűnek tűnő beállítást elvégezni, ebben kérnék segítséget.

Azt szeretném, hogy egy meglévő weboldalnak legyen okostelóra optimalizált nézete is

A következő feltételekkel szeretném ezt megvalósítani:

1. Drupal 7 a jelenlegi oldal, tehát D7-re kellene megoldás
2. Ha valaki okostelóról érkezik, legyen automatikusan átirányítva a mobil sminkre. (tablet maradjon a desktop sminken)
3. Okostelón az automatikus átirányítás után legyen lehetőség visszaváltani a desktop sminkre, majd vissza a mobilra.
4. A smink váltás bekapcsolt gyorsítótár esetén is működjön be nem jelentkezett felhasználóknak is.

Sokféle úton próbáltam mindezt megoldani, most azt a gondolatmenetet vázolnám, amivel szerintem a legközelebb jutottam a megoldáshoz.

A legfőbb problémát a 4. pont okozza, ha az nem lenne könnyen meg lehetne ezt oldalni, de szerintem egy drupal oldal be nem kapcsolt gyorsítótárral nagyon lassú.
A drupal saját DB alapú cache-e url alapú, azaz olyan smink váltó modulok, amik nem írják át az URL-t smink váltáskor, nem jöhetnek szóba. (ilyenekből sok van)
A egyik legjobbnak tűnő, themekey nevű modul oldalán azt írják, hogy cache kompatibilis, pedig az eszköz detektálós része sajnos nem az :(

Olyan megoldás jönne így szóba, ami okostelefon detektálása után átírja az URL-t, pl m.akami.hu-ra. Így a 2 nézet gyorstárazott oldalai külön tárolódnak.
Sok helyen erre megoldásnak a Mobile Tools modult írják, de sajnos annak D7 verziója DEV állapotú és nem javasolt éles környezetben. (pláne egy csomó DEV függősége is van + browscap modult patchelni is kell)

Mivel más ilyen használható modult nem találtam, úgy döntöttem, hogy a redirectet apache szinten végzem el (e szerint: http://blog.justin.kelly.org.au/apache-mobile-device-detection/)
Ez kiválóan működik, azaz okostelókat átirányítja az m.valami.hu-ra.
Majd a themekey modulban konfiguráltam, hogy ha a HOST = m.valami.hu, akkor váltsa át a sminket mobile sminkre.
Ezzel az első két pont kipipálva.

A 3. pont megoldása a következő lenne szerintem:
A usert visszairányítjuk a desktop nézetre (www.valami.hu), úgy hogy az url végéhez hozzácsapjuk a !no_mobile stringet. Ekkor okosteló esetén sem vált át mobil nézetre a lenti apache rewrite sor miatt:

RewriteCond %{THE_REQUEST} !no_mobile [NC]

Ez a módszer cache kompatibilis lenne, csak nem tudom hogy vegyem rá drupalt, hogy odakerüljön a !no_mobile minden url végére. Erre tud valaki valami megoldást?
(Ha az okostelós usert úgy szeretném visszaírányítani a desktop nézetre, hogy az url a régi marad (m.valami.hu/valami), azaz egyszerű smink váltással, akkor az nem lesz cache kompatibilis.)

Nincs komoly tapasztalatom az egyéb cache modulok terén, ha esetleg van olyan cache modul, ami valamilyen módon smink szerint cache-el, az is akár megoldás lehet. Tud valaki ilyenről?

Minden olyan megoldás érdekelne ami a fenti 4 pontnak megfelel :)

Köszönöm előre is a segítséget

pero

Drupal verzió: 
eMeLA képe

Én Domain Access-el oldattam meg ?
Így itt csak a mobil detektálást és átirányítást kell külön megoldani.

1
0

...mit tudok: http://web.termuves.hu

pero képe

A domain access-t nem használtam eddig, csak elméletben sejtem mit csinal.
De ez esetben se tudom megoldani, hogy az okostelós látogató vissza tudjon váltani a teljes nézetre.
Vagy igen?

0
0
Voluman képe

pero képe

igen, néztem, de ahogy írtam nem kompatibilisek a beépített cache-el a eszköz detektálós rule-jai :(

0
0
pero képe

Végül sikerült a dolog:

Rátaláltam erre: http://drupal.org/project/mobile_subdomain
Ez a modul felismeri a okostelókat, majd átírányít subdomainre. Felül is lehet bírálni az átirányítást
A smink váltást pedig a Themekey modul végzi.

1
0
Koczeka képe

Szia,

El tudnád mondani, hogy a 3. pontot pontosan hogyan oldottad meg végül?
Köszönöm előre is.

0
0

Koczeka... de nem szögletes :)

pero képe

Bocsánat a késői reakció végett de valamiért nem kaptam értesítést az új hozzászólásról....

A mobile_subdomain modul lehetőséget biztosít a váltáshoz:

a pelda.hu-n a desktop smink jön be.
m.pelda.hu-n a mobile nézet jön be.
A sminkváltást a themekey modul végzi.

A mobil sminkre rá kell tenni linkként a következő hivatkozást:
pelda.hu/mobile-subdomain-redirect/false
(ez tulajdonképpen egy SESSION változót állít át.)
Ekkor a mobil eszköz visszavált a teljes nézetre.

A teljes nézetre pedig a következő link kell a visszaváltáshoz:
pelda.hu/mobile-subdomain-redirect/true
Ezzel visszakapcsoljuk az automata átirányítást.

Ez így majdnem jó, egyetlen szépséghiba, hogy a teljes nézeten csak akkor kellene megjeleníteni a visszaváltást, ha a user mobilról van. A user pedig csak akkor van mobilról, ha a SESSION változót átírta.
Így én a teljes nézet sminkjébe a következőt tettem:

if ( $_SESSION['mobile_subdomain']['noredirect'] ) {
print 'Visszaváltás mobil nézetre';
}

Így egy desktop usernek nem jelenik meg a visszaváltási lehetőség, hiszen az értelmetlen lenne...

1
0
Szotyi képe

Erről írnál pár mondatot, hogy hogyan kell beállítani a Themekey modult?

0
0

Péter

pero képe

admin/config/user-interface/themekey oldalon az alábbiakat állítsd be THEME SWITCHING RULE CHAIN-nek:

system:host * m.pelda.hu

Smink meg legyen a mobil sminked

Ebben az esetbe ha az m.pelda.hu-t írod be, akkor a mobil smink fog betöltődni.

Természetesen kell hogy tegyél a sites könyvtárban egy simlinket: m.pelda.hu -> pelda.hu

1
0