<?xml version="1.0" encoding="utf-8" standalone="yes"?> <?xml-stylesheet href="https://maik.io/pretty-feed-v3.xsl" type="text/xsl"?>

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Twitter Cards on maik.io</title>
    <link>https://maik.io/tags/twitter-cards/</link>
    <description>Recent content in Twitter Cards on maik.io</description>
    <generator>maik.io</generator>
    <language>de-de</language>
    <lastBuildDate>Tue, 21 May 2019 22:00:00 +0000</lastBuildDate>
    <atom:link href="https://maik.io/tags/twitter-cards/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Open Graph / Twitter Cards in Grav</title>
      <link>https://maik.io/notes/2019-05-21-open-graph-twitter-cards-in-grav/</link>
      <pubDate>Tue, 21 May 2019 22:00:00 +0000</pubDate>
      <guid>https://maik.io/notes/2019-05-21-open-graph-twitter-cards-in-grav/</guid>
      <description>&lt;p&gt;Vor einigen Wochen wechselte ich mein Content Management System von Kirby zu Grav. Die Gründe dafür findet ihr &lt;a href=&#34;https://maik.io/notes/2019-02-22-ciao-kirby-cms/&#34; target=&#34;_blank&#34; &gt;hier&lt;/a&gt;. Nach dem Wechsel fehlt es immer noch an Kleinigkeiten. Zum Beispiel habe ich noch keine Vorschaugrafiken, wenn man einen Link meines Blogs teilt. Das wollte ich nun nachholen und hier kurz aufzeigen, mit welcher sehr einfachen Lösung ich das Problem bewältigt habe.&lt;/p&gt;
&lt;p&gt;Der &lt;a href=&#34;http://ogp.me&#34; target=&#34;_blank&#34; &gt;Open Graph&lt;/a&gt; ist einer der wenigen guten Dinge, die aus dem Hause Facebook kommen. Er standardisiert die Weitergabe von Metainformationen.&lt;/p&gt;</description>
      <content:encoded>
      <![CDATA[<p>Vor einigen Wochen wechselte ich mein Content Management System von Kirby zu Grav. Die Gründe dafür findet ihr <a href="https://maik.io/notes/2019-02-22-ciao-kirby-cms/" target="_blank" >hier</a>. Nach dem Wechsel fehlt es immer noch an Kleinigkeiten. Zum Beispiel habe ich noch keine Vorschaugrafiken, wenn man einen Link meines Blogs teilt. Das wollte ich nun nachholen und hier kurz aufzeigen, mit welcher sehr einfachen Lösung ich das Problem bewältigt habe.</p>
<p>Der <a href="http://ogp.me" target="_blank" >Open Graph</a> ist einer der wenigen guten Dinge, die aus dem Hause Facebook kommen. Er standardisiert die Weitergabe von Metainformationen.</p>
<p>Eigentlich sind hier keine <code>if</code>-Schleifen nötig, da alle Informationen bei jeder Seite oder jedem Blogpost vorliegen sollten. Nur beim Vorschaubild gibt es eine kleine Abweichung, da ich in Kirby mit der Taxonomie <code>coverimage</code> gearbeitet habe. Diese Metainformationen möchte ich natürlich weiter nutzen, daher rufe ich in der letzten Zeile für das Attribut <code>og:image</code> den Wert von <code>coverimage</code> auf, sollte <code>coverimage</code> nicht gegeben sein, wird das erste Bild im Ordner genommen.</p>
<p>Hier also mein Code für Open Graph</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Html" data-lang="Html"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">&#34;og:site_name&#34;</span> <span class="na">property</span><span class="o">=</span><span class="s">&#34;og:site_name&#34;</span> <span class="na">content</span><span class="o">=</span><span class="s">&#34;{{ site.title }}&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">&#34;og:title&#34;</span> <span class="na">property</span><span class="o">=</span><span class="s">&#34;og:title&#34;</span> <span class="na">content</span><span class="o">=</span><span class="s">&#34;{{ page.title }}&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">&#34;og:description&#34;</span> <span class="na">property</span><span class="o">=</span><span class="s">&#34;og:description&#34;</span> <span class="na">content</span><span class="o">=</span><span class="s">&#34;{{ page.summary|e }}&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">&#34;og:type&#34;</span> <span class="na">property</span><span class="o">=</span><span class="s">&#34;og:type&#34;</span> <span class="na">content</span><span class="o">=</span><span class="s">&#34;article&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">&#34;og:url&#34;</span> <span class="na">property</span><span class="o">=</span><span class="s">&#34;og:url&#34;</span> <span class="na">content</span><span class="o">=</span><span class="s">&#34;{{ page.url(true) }}&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">&#34;og:image&#34;</span> <span class="na">property</span><span class="o">=</span><span class="s">&#34;og:image&#34;</span> <span class="na">content</span><span class="o">=</span><span class="s">&#34;{{ uri.base ~ (page.header.coverimage ? page.media.images[page.header.coverimage].url : page.media.images|first.url) }}&#34;</span> <span class="p">/&gt;</span>
</span></span></code></pre></div><p>Twitter Cards sind im Wesentlichen dasselbe, haben aber kleine Abweichungen.</p>
<p>Eine nennenswerte Abweichung ist das Attribut <code>twitter:site</code>. Hier kann man den Twitter-Account einer Seite hinterlegen. Es gäbe laut der <a href="https://developer.twitter.com/en/docs/tweets/optimize-with-cards/guides/getting-started" target="_blank" >Dokumentation</a> auch noch das Attribut <code>twitter:creator</code>. In meinem Fall wären das aber derselbe Account, daher habe ich auf <code>twitter:creator</code> verzichtet.</p>
<p>Beim Attribut <code>twitter:image</code> bin ich genauso verfahren wie bei <code>og:image</code>.</p>
<p>Wie folgt der Code für Twitter Cards</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-HTML" data-lang="HTML"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">&#34;twitter:card&#34;</span> <span class="na">property</span><span class="o">=</span><span class="s">&#34;twitter:card&#34;</span> <span class="na">content</span><span class="o">=</span><span class="s">&#34;summary&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">&#34;twitter:site&#34;</span> <span class="na">property</span><span class="o">=</span><span class="s">&#34;twitter:site&#34;</span> <span class="na">content</span><span class="o">=</span><span class="s">&#34;@maik_wi&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">&#34;twitter:title&#34;</span> <span class="na">property</span><span class="o">=</span><span class="s">&#34;twitter:title&#34;</span> <span class="na">content</span><span class="o">=</span><span class="s">&#34;{{ page.title }}&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">&#34;twitter:description&#34;</span> <span class="na">property</span><span class="o">=</span><span class="s">&#34;twitter:description&#34;</span> <span class="na">content</span><span class="o">=</span><span class="s">&#34;{{ page.summary|e }}&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">&#34;twitter:image&#34;</span> <span class="na">property</span><span class="o">=</span><span class="s">&#34;twitter:image&#34;</span> <span class="na">content</span><span class="o">=</span><span class="s">&#34;{{ uri.base ~ (page.header.coverimage ? page.media.images[page.header.coverimage].url : page.media.images|first.url) }}&#34;</span> <span class="p">/&gt;</span>
</span></span></code></pre></div><p>In meinem Theme steckt der ganze Metakram in <code>base.html.twig</code> in <code>assets</code>.</p>
<p>In der <a href="https://learn.getgrav.org/16/content/headers" target="_blank" >Dokumentation von Grav</a> findet man auch noch ein nützliches Beispiel.</p>
]]>    
      <![CDATA[<br><br><hr><br><small><p>Vielen Dank fürs Lesen! Wenn du Lust auf noch mehr Gedanken, Updates und ab und zu einen Blick hinter die Kulissen hast, folge mir doch gern auf <a href="https://maik.io/mastodon">Mastodon</a> oder <a href="https://maik.io/instagram">Instagram</a>.</p><p>Hast du Fragen oder Feedback? Schreib mir gern eine <a href="https://maik.io/email">E-Mail</a>.</p></small>]]>
      </content:encoded>  
    </item>      
  </channel>
</rss>