如何通过用户代理切换布局

时间:2016-07-25 02:28:25

标签: elixir phoenix-framework

我正在使用Phoenix框架创建一个网站。

我想使用不同的布局和模板,具体取决于用户是使用PC还是智能手机。

所以,我想通过检查用户代理来切换布局和模板。

检查用户代理和切换布局和模板的最佳方法是什么? 或者,您知道任何有用的库吗?

1 个答案:

答案 0 :(得分:4)

您可以在插头中轻松完成此操作。传递给您的插件的conn结构有一个:req_headers键,其中包含"user-agent"的其他标题。您可以直接使用它,也可以使用https://github.com/elixytics/ua_inspector之类的解析库来条件化您的布局选择。然后,您可以使用Phoenix.Controller.put_layout/2 https://hexdocs.pm/phoenix/Phoenix.Controller.html#put_layout/2

选择布局

例如使用ua_inspector:

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