2024-08-16-ean
Erakutsi mastodonen postak symfony blog batean
Ez dut asko idazten mastodon.eus-en. Hala ere idazten nuena nire blogean agertzea nahi nuen.
Horregatik funtzionalitate berri bat gehitu dut, eta aitortu behar dut oso erraza izan dela:
Mastodonek edozein bezerori esteka bat eskaintzen dio bere postak lortzeko. Adibidez, nire kasuan "tfe" izena duen kontu bat dut mastodon.eusen, eta informazio guztia lor dezaket https://mastodon.eus/@tfe.rss-ren esteka bidez.
Lehen etapa: gehitu konfigurazio bat config/services.yaml fitxategian, adibidez:
parameters:
mastodon_feed: 'https://mastodon.eus/@tfe.rss'
Bigarren etapa: Aldatu controladorea rss-feed-en edukia lortzeko:
// Irakurri konfigurazioa
$mastodon_rss = $this->getParameter('mastodon_feed');
$mastodon_items=[];
// Cache objektu berri bat sortu feed-a gordetzeko
$cache = new FilesystemAdapter();
$cached = $cache->getItem('mastodon_feed');
$cached->expiresAfter(3600); /* ordu bat */
// Cache ez badugu...
if(!$cached->isHit()) {
if($mastodon_feed = simplexml_load_string(file_get_contents($mastodon_rss)))
{
foreach($mastodon_feed->channel->item as $item)
{
$mastodon_items[]=(array)$item;
}
$cached->set($mastodon_items);
$cache->save($cached);
$mastodon_items = $cached->get();
}
}
return $this->render('blog/index.html.twig', [
'extra_css' => ['blog.css'],
'title' => 'Blog',
'mastodon_items' => $mastodon_items,
'items' => $last_news,
]);
Irugarren etapa, noski: aldatu index.html.twig fitxategia, mastodon_items aldagaiaren edukia erabiltzeko:
<div class="mastodon_items">
<h2>Mastodon feed</h2>
{% for item in mastodon_items %}
<article>
{{ item.description|raw }}
<a class="mastodon_link" href="{{ item.link }}" target="_blank">Ireki mastodon.eus-en </a>
</article>
{% endfor %}
</div>
Erraza ezta?