2016-07-25 7 views
2

Ich erstelle eine Website mit dem Phoenix-Framework.Wie man Layout durch User Agent wechseln

Ich würde gerne ein anderes Layout und Vorlage verwenden, je nachdem ob der Benutzer einen PC oder ein Smartphone benutzt.

Also, ich möchte Layout und Vorlage wechseln, indem Sie User Agent überprüfen.

Was ist der beste Weg, User Agent zu überprüfen und Layout und Vorlage zu wechseln? Oder, wissen Sie irgendeine nützliche Bibliothek, um es zu tun?

Antwort

4

Sie können dies leicht in einem Stecker tun. Die conn Struktur, die an Ihren Plug übergeben wurde, hat einen :req_headers Schlüssel, der unter anderem die "user-agent" enthält. Sie können das entweder direkt verwenden oder eine Parsing-Bibliothek wie https://github.com/elixytics/ua_inspector verwenden, um Ihre Layout-Auswahl zu konditionieren. Anschließend können Sie das Layout mit Phoenix.Controller.put_layout/2https://hexdocs.pm/phoenix/Phoenix.Controller.html#put_layout/2

Für das Beispiel wählen mit ua_inspector:

def some_plug(conn) do 
    ua = conn.req_params["user-agent"] 
    case UAInspector.parse(ua).os.name do 
     "iOS" -> Phoenix.Controller.put_layout(conn, "mobile") 
     _ -> Phoenix.Controller.put_layout(conn, "desktop") 
    end 
    end