Phoenix: alterando o título da página a partir do controller

13/08/2022 tipselixirphoenix

Phoenix >= 1.7

Dentro do arquivo root.html.heex, existe o seguinte trecho dentro da tag head:

<.live_title suffix=" · Anthu">
  <%= assigns[:page_title] || "Anthu" %>
</.live_title>
 
O live.title é um PhoenixComponent que tem como função renderizar um title dinâmico para sua página. 

Phoenix <= 1.6

Dentro do arquivo root.hoot.heex, existe o seguinte trecho dentro da tag head: <%= live_title_tag assigns[:page_title] || "home", suffix: " · SuaAplicação" %>

O live_title_tag é um macro disponibilizado pelo Phoenix que serve para gerar titles dinâmicos. Ele irá usar o assing :page_title, junto com um sufixo, para gerar o título da página. O sufixo é fixo, vai estar lá em toda página da aplicação, e se você preferir, pode alterar para prefixo através da opção prefix.

Sabendo disso, basta ir no seu controller e na função render, e passar o page_title que você quiser, como no seguinte exemplo:

def show(conn, %{"slug" => slug}) do
  with post <- Blog.get_post(slug) do
    render(conn, "show.html", post: post, page_title: post.title)
  end
end

Feito, título customizado!