2016-07-25 13 views
2

Phoenixフレームワークを使用してウェブサイトを作成しています。ユーザーエージェントでレイアウトを切り替える方法

PCやスマートフォンを使用するかどうかによって、別のレイアウトとテンプレートを使用したいと思います。

私はユーザエージェントをチェックしてレイアウトとテンプレートを切り替えたいと思います。

ユーザエージェントとスイッチのレイアウトとテンプレートを確認する最も良い方法は何ですか? または、それを行うための有用なライブラリがありますか?

答えて

4

これはプラグで簡単に行うことができます。あなたのプラグに渡されたconn構造体には:req_headersキーがあり、それは他のヘッダの中に"user-agent"を含んでいます。これを直接使用するか、https://github.com/elixytics/ua_inspectorのような解析ライブラリを使用して、レイアウトの選択条件を条件付けすることができます。その後、ua_inspectorを使用して、たとえばPhoenix.Controller.put_layout/2https://hexdocs.pm/phoenix/Phoenix.Controller.html#put_layout/2

でレイアウトを選択することができます。

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 
関連する問題