Ü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
Én Domain Access-el oldattam
Én Domain Access-el oldattam meg ?
Így itt csak a mobil detektálást és átirányítást kell külön megoldani.
...mit tudok: http://web.termuves.hu
A domain access-t nem
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?
A ThemeKey modult nézted már?
A ThemeKey modult nézted már? Itt található róla egy jó oktató videó.
igen, néztem, de ahogy írtam
igen, néztem, de ahogy írtam nem kompatibilisek a beépített cache-el a eszköz detektálós rule-jai :(
Végül sikerült a dolog:
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.
"majd vissza a mobilra"
Szia,
El tudnád mondani, hogy a 3. pontot pontosan hogyan oldottad meg végül?
Köszönöm előre is.
Koczeka... de nem szögletes :)
Bocsánat a késői reakció
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...
"smink váltást pedig a Themekey modul"
Erről írnál pár mondatot, hogy hogyan kell beállítani a Themekey modult?
Péter
admin/config/user-interface
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