Muitas das minhas páginas internas seguem essa mesma lógica: utilizar o feed/RSS como uma espécie de base de dados para construir páginas criativas.
Anteriormente, eu publicava os status aqui mesmo, neste blog, usando uma tag chamada status. Depois, centralizava tudo em uma página através do código maroto que vou deixar abaixo.
Depois de um tempo, resolvi separar os status e colocá-los em outro lugar. Assim, o feed deste blog não ficava uma bagunça e eu também podia utilizar o e-mail para fazer publicações diretamente. No celular, é muito mais fácil enviar um e-mail do que entrar no painel do Blogger toda vez que quero publicar alguma coisa.
O script, em si, é muito simples:
- Lê um feed do Blogger (é preciso ter outro blog já criado) (o meu é esse aqui);
- Converte os dados do feed em elementos HTML utilizando JavaScript;
- Utiliza CSS para definir a aparência da página;
- Exibe os posts automaticamente, sem precisar cadastrá-los manualmente na página.
Em geral, se você copiar e colar o código na sua página, widget ou post, ele já deve funcionar. Basta substituir LINK_SEU_BLOG_AQUI pelo endereço do blog que contém os posts e QUANTIDADE_POSTS pela quantidade de publicações que você deseja carregar.
Novamente, no meu caso, eu utilizo um segundo blog para alimentar essa página. Mas você também pode fazer tudo dentro do mesmo blog e separar as publicações utilizando as tags.
Não vou entrar muito a fundo nessa parte porque ela depende bastante do layout e da estrutura de cada blog. A lógica, porém, é a mesma: no final do script, você pode indicar uma tag específica para filtrar os posts.
Por exemplo:
<script src="https://LINK_SEU_BLOG_AQUI/feeds/posts/default/-/status?alt=json-in-script&callback=loadStatus&max-results=QUANTIDADE_POSTS"></script>
Nesse caso, o feed retorna apenas as publicações que possuem a tag status.
Se você quiser utilizar outra tag, basta substituir status pelo nome dela.
O código
Basta copiar e colocar o código abaixo onde quiser, substituindo o que precisa ser substituído.<div id="status-feeds">
<div class="status-loading">carregando...</div>
</div>
<style>
#status-feeds {
max-width: 700px;
margin: 60px auto;
padding: 20px;
}
.status-post {
padding: 25px 0;
border-bottom: 1px solid var(--cor-borda);
}
.status-post .content {
font-size: 14px;
line-height: 1.65;
color: var(--cor-texto);
}
.status-post .date {
margin-top: 12px;
font-family: "Courier New", monospace;
font-size: 9px;
color: var(--cor-texto-suave);
opacity: .7;
}
.status-post a {
color: var(--cor-link);
text-decoration: none;
border-bottom: 1px dotted var(--cor-texto-suave);
}
.status-post a:hover {
color: var(--cor-link-hover);
border-color: var(--cor-link-hover);
}
.status-post img {
display: none;
}
.status-loading {
padding: 30px 0;
font-size: 11px;
color: var(--cor-texto-suave);
}
</style>
<script>
function loadStatus(json) {
const container = document.getElementById("status-feeds");
const entries = json.feed.entry;
if (!entries) {
container.innerHTML =
'<div class="status-loading">Nenhum status encontrado.</div>';
return;
}
container.innerHTML = "";
entries.forEach(function(entry) {
let content = entry.content
? entry.content.$t
: entry.summary.$t;
/* Remove quebras de linha */
content = content.replace(/(\r\n|\n|\r)/gm, " ");
/* Remove imagens */
content = content.replace(/<img[^>]*>/gi, "");
/* Data */
const d = new Date(entry.published.$t);
const day = String(d.getDate()).padStart(2, "0");
const month = String(d.getMonth() + 1).padStart(2, "0");
const year = String(d.getFullYear()).slice(-2);
const hours = String(d.getHours()).padStart(2, "0");
const minutes = String(d.getMinutes()).padStart(2, "0");
const date =
`${day}.${month}.${year} ${hours}:${minutes}`;
/* Cria o post */
const post = document.createElement("article");
post.className = "status-post";
post.innerHTML = `
<div class="content">
${content}
</div>
<div class="date">
${date}
</div>
`;
container.appendChild(post);
});
}
</script>
<script src="https://LINK_SEU_BLOG_AQUI/feeds/posts/default/?alt=json-in-script&callback=loadStatus&max-results=QUANTIDADE_POSTS"></script>
Mudando as cores
Você deve ter reparado que, no CSS — tudo que está entre
<style> e </style> — existem algumas linhas utilizando nomes como var(--cor-link).
Isso acontece porque, no meu layout, eu utilizo variáveis CSS para definir as cores. Se o seu tema não utiliza essas mesmas variáveis, basta substituí-las pelas cores que você quiser.
Por exemplo:
color: var(--cor-link-hover);
→
color: #ffd045;
Você pode fazer isso com todas as variáveis utilizadas no código.
Personalizando
Essa é apenas a estrutura básica. A parte interessante é justamente poder modificar o CSS e transformar essa lista em praticamente qualquer coisa.
Você pode alterar fontes, tamanhos, espaçamentos, bordas, cores, posicionamento e até mesmo a forma como os posts são apresentados.
A página que eu fiz, por exemplo, é um pouco diferente , mas ela utiliza a mesma ideia básica do script acima.
Então, sejam criativos. O feed funciona como uma fonte de dados e o JavaScript fica responsável por transformar esses dados em HTML.
Resultado
O resultado esperado é uma lista com os últimos posts encontrados no feed. A quantidade de posts exibidos vai depender do valor definido em QUANTIDADE_POSTS, então você pode colocar apenas 1 e isso vai retornar exatamente o último status (como eu tenho na sidebar).
Se ficou alguma dúvida, me deixe saber nos comentários. E, se você criar alguma página utilizando essa ideia, envie o link também, quero saber o que você criou por aí.
Muito obrigada por isso, Igor! Quando comecei no mundo dos blogs, diversas pessoas compartilhavam sua sabedoria e nos ajudavam a deixar o espaço mais legal, como você está fazendo com essa postagem. Hoje não vejo tanto isso e você trouxe junto uma nostalgia muito da boa. Obrigada mesmo. Bjão
ResponderExcluirIgor, salvador da pátria hahaha
ResponderExcluirUsei teu post e pedi pro Claude me ajudar a fazer como tu explicou aqui e foi a melhor escolha que poderia ter feito, pois ficou exatamente como eu queria, além de ser muito mais simples mesmo.
Muito obrigada por esse post ;)
ameeeeeeeeeeei! e sabe o que é o melhor? você pode usar e-mail para postar, não precisa usar o app. nas configurações você consegue criar um bloggermail, depois você só envia mensagens para esse email e ele publica automaticamente....
ExcluirSim, já fiz lá! \o/
ExcluirA única coisa é que ele não aceita link, mas isso nem é importante, dando pra postar de fora e colocar foto quando quiser, já tá ótimo :D
amei! já tô pensando em como vou aplicar no meu blog („• ֊ •„) obg por compartilhar!!
ResponderExcluirp.s: seu blog é lindo!!
blog-entretanto.blogspot.com
Eu já salvei o seu post pra fazer no meu blog, mas vou ter que esperar pelo menos minha próxima folga porque minha vida precisa da minha atenção nesse momento. Mas quero muito meu filhote de blog rs
ResponderExcluir