2016-07-25 3 views
2

Я создаю веб-сайт с феникс-фреймворком.Как переключить макет с помощью пользовательского агента

Я хотел бы использовать другой макет и шаблон в зависимости от того, использует ли пользователь ПК или смартфон.

Итак, я хотел бы переключить макет и шаблон, проверив агент пользователя.

Каков наилучший способ проверить агент пользователя и макет и шаблон переключателя? Или, знаете ли вы какую-нибудь полезную библиотеку?

ответ

4

Вы можете сделать это легко в вилке. Строка conn, переданная вашей вилке, имеет ключ :req_headers, который будет содержать среди других заголовков "user-agent". Вы можете использовать это напрямую или использовать библиотеку синтаксического анализа, такую ​​как https://github.com/elixytics/ua_inspector, чтобы условно выбрать ваш макет. Затем вы можете выбрать макет с Phoenix.Controller.put_layout/2https://hexdocs.pm/phoenix/Phoenix.Controller.html#put_layout/2

Для примера, используя 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 
Смежные вопросы