Erweiterte AMP Komponenten hinzufügen
Mit dem AMP Komponentensystem kannst du schnell und mit minimalem Aufwand effiziente und responsive Features in deine Artikel integrieren. Die AMP HTML Bibliothek verfügt über drei Klassifizierungen für AMP Komponenten:
-
built-in (integriert): Das sind Komponenten, die in der AMP JavaScript Basisbibliothek enthalten sind (im Tag
<head>
definiert), z. B.amp-img
undamp-pixel
. Diese Komponenten können sofort in einem AMP Dokument verwendet werden. -
extended (erweitert): Das sind Erweiterungen der Basisbibliothek, die explizit als benutzerdefinierte Elemente in das Dokument aufgenommen werden müssen. Benutzerdefinierte Elemente erfordern bestimmte Skripte, die im Abschnitt
<head>
hinzugefügt werden (z. B.<script async custom-element="
amp-video
...
). -
experimental (experimentell): Das sind Komponenten, die veröffentlicht wurden, aber noch nicht für den breiten Einsatz geeignet sind. Entwickler können sich dafür entscheiden, diese Funktionen schon vor ihrem endgültigen Release zu verwenden. Weitere Informationen dazu findest du unter Experimentelle Funktionen.
In unserem Beispiel wird bereits eine integrierte Komponente verwendet: amp-img
. Im Tutorial "HTML zu AMP konvertieren" haben wir besprochen, wie sich diese Komponente im AMP Layoutsystem verhält. Fügen wir unserem Nachrichtenartikel nun einige gängige erweiterte AMP Komponenten hinzu.
Monetarisierung mit Ads
Ads werden in AMP mithilfe der Komponente amp-ad
erstellt. Mithilfe der Komponente amp-ad
kannst du Ads auf verschiedene Arten konfigurieren und z. B. deren Breite, Höhe und Layoutmodus anpassen. Viele Ad Plattformen erfordern jedoch noch weitere Einstellungen, z. B. eine Konto ID für das Werbenetzwerk, die Angabe der spezifischen Ad, die bereitgestellt werden soll, oder Optionen für die Zielgruppe der Ad. Solche Optionen können mithilfe von HTML Attributen mühelos in der Komponente amp-ad
angegeben werden.
Sieh dir dieses Beispiel eines DoubleClick Ads an:
<amp-ad
width="300"
height="250"
type="doubleclick"
data-slot="/35096353/amptesting/image/static"
>
</amp-ad>
Wie du siehst, ist das eine sehr einfache Konfiguration. Beachte das Attribut type
, das der Komponente amp-ad
die Ad Plattform mitteilt, die wir verwenden wollen. In diesem Fall möchten wir die Plattform DoubleClick verwenden und haben deshalb als Wert doubleclick
angegeben.
Das Attribut data-slot
ist etwas spezieller. In amp-ad
sind alle Attribute, die mit data-
beginnen, anbieterspezifische Attribute. Das bedeutet, dass nicht alle Anbieter dieses Attribut benötigen und bei seiner Angabe auch nicht unbedingt reagieren werden. Vergleiche das obige DoubleClick Beispiel mit der folgenden Testanzeige der Plattform A9:
<amp-ad
width="300"
height="250"
type="a9"
data-aax_size="300x250"
data-aax_pubname="test123"
data-aax_src="302"
>
</amp-ad>
Zu Testzwecken kannst du beide oben genannten Beispiele direkt nach dem Tag <header>
in deinem Artikel hinzufügen.
Denke daran, dass nicht alle Komponenten in der JavaScript Datei mit der AMP Kernbibliothek enthalten sind. Wir müssen eine zusätzliche JavaScript Anforderung für die Ad Komponente einbinden.
Füge dem Tag <head>
das folgende Skript hinzu:
<script
async
custom-element="amp-ad"
src="https://cdn.ampproject.org/v0/amp-ad-0.1.js"
></script>
Aktualisiere die Seite. Jetzt sollten zwei Testanzeigen sichtbar sein:
Mixed Content
oder XMLHttpRequest cannot load
. Der erstgenannte Fehler hängt wahrscheinlich mit dem A9 Ad zusammen, da nicht alle geladenen Inhalte sicher sind. Das ist eine wichtige Voraussetzung für alle mit AMP bereitsgestellten Ads. Die beiden folgenden amp-ad
Abschnitte sind ein Beispiel für die Flexibilität, die amp-ad
zur Unterstützung der Funktionen von Ad Plattformen bietet. In diesem Fall haben wir (mithilfe des Dashboards von DoubleClick) zwei DoubleClick Testanzeigen so konfiguriert, dass sie nur in bestimmten Ländern angezeigt werden: die erste nur in Großbritannien, die zweite nur in den USA. Du kannst diese beiden Geotargeting Konfigurationen im AMP Dokument unterhalb der bereits hinzugefügten Ads hinzufügen:
<amp-ad
width="300"
height="250"
type="doubleclick"
data-slot="/35096353/amptesting/geo/uk"
>
<div fallback>No ad appeared because you're not browsing from the UK!</div>
</amp-ad>
<amp-ad
width="300"
height="250"
type="doubleclick"
data-slot="/35096353/amptesting/geo/us"
>
<div fallback>No ad appeared because you're not browsing from the US!</div>
</amp-ad>
Aktualisiere die Seite und sieh sie dir an. Der folgende Screenshot wurde in Kanada aufgenommen und zeigt, dass keine der beiden Ads lädt:
amp-ad
Tags zusätzliche div
Tags mit dem Attribut fallback
enthalten. Kannst du dir denken, was das Attribut fallback
hier angibt? Es informiert das Ladesystem von AMP, den Inhalt dieses Elements nur dann anzuzeigen, wenn das übergeordnete Element nicht erfolgreich geladen werden kann. Weitere Informationen dazu findest du Platzhalter & Fallbacks.
amp-ad
.
Unser AMP Dokument enthält jetzt Text, ein Bild und eine auf der Seite eingebettete Ad. All das brauchst du, um deine Story zu erzählen und deinen Content zu monetarisieren. Moderne Websites bieten jedoch in der Regel mehr Funktionen als nur Bilder und Text.
Wir können unser AMP Dokument noch interessanter gestalten und die folgenden fortgeschrittenen Webfunktionen implementieren, die in Nachrichtenartikeln weit verbreitet sind:
- YouTube Videos
- Tweets
- Zitate aus Artikeln
YouTube Video einbetten
Versuchen wir, ein YouTube Video in das Dokument einzubetten. Füge dazu den folgenden Code direkt nach <header>
in deinem AMP Dokument ein (oberhalb der soeben hinzugefügten Abschnitte amp-ad
):
<amp-youtube
data-videoid="npum8JsITQE"
layout="responsive"
width="480"
height="270"
>
<div fallback>
<p>The video could not be loaded.</p>
</div>
</amp-youtube>
Aktualisiere die Seite. Anstelle des Videos wird folgender Text angezeigt: "The video could not be loaded."
Du erhältst diesen Fehler, selbst wenn dein Browser YouTube Videos ohne Probleme anzeigen kann. Warum? Schuld ist nicht das Video, das nicht geladen werden konnte, sondern das Fehlschlagen der Komponente selbst.
Denke daran, dass nicht alle Komponenten in der JavaScript Datei mit der AMP Kernbibliothek enthalten sind. Wir müssen eine zusätzliche JavaScript Anforderung für die YouTube Komponente einbinden.
#development=1
enthält, wird an dieser Stelle ein AMP Validierungsfehler angezeigt, der dich daran erinnert, den JavaScript Code für amp-youtube
hinzuzufügen. Außerdem siehst du einen Link zur Dokumentation, die erklärt, welches script
Tag verwendet werden soll. Füge im Tag <head>
das folgende Skript ein:
<script
async
custom-element="amp-youtube"
src="https://cdn.ampproject.org/v0/amp-youtube-0.1.js"
></script>
Aktualisiere die Seite. Jetzt solltest du das YouTube Video sehen:
Wie bei den anderen Elementen auf der Seite haben wir width
und height
des Videos festgelegt, damit das AMP Layoutsystem das Seitenverhältnis berechnen kann. Außerdem geben wir layout
den Wert responsive
, damit das Video die Breite des übergeordneten Elements ausfüllt.
Weitere Informationen zum Einbetten von YouTube Videos findest du in der Dokumentation zur Komponente amp-youtube
. Weitere Video- und Medienkomponenten findest du in der Liste der AMP Medienkomponenten.
fallback
, um Benutzer mitzuteilen, dass eine bestimmte Komponente nicht geladen werden kann oder nicht von ihrem Browser unterstützt wird. Einen Tweet anzeigen
Die Einbettung vorformatierter Tweets von Twitter ist ein verbreitetes Feature in Nachrichtenartikeln. Die Komponente amp-twitter
kann diese Funktionalität problemlos bereitstellen.
Füge zunächst zum Tag <head>
deines Dokuments die folgende JavaScript Anforderung hinzu:
<script
async
custom-element="amp-twitter"
src="https://cdn.ampproject.org/v0/amp-twitter-0.1.js"
></script>
Nun kannst du in deinem Artikel den folgenden Code hinzufügen, um den Tweet einzubetten:
<amp-twitter
width="486"
height="657"
layout="responsive"
data-tweetid="638793490521001985"
>
</amp-twitter>
Das Attribut data-tweetid
ist ein weiteres Beispiel für ein benutzerdefiniertes Attribut, das von einer bestimmten Plattform benötigt wird. In diesem Fall ordnet Twitter den Wert des Attributs data-tweetid
einem bestimmten Tweet zu.
Aktualisiere deinen Browser und sieh die die Seite an. Der Tweet sollte nun angezeigt werden:
Weitere Informationen zum Einbetten von Twitter Tweets findest du in der Dokumentation zur Komponente amp-twitter
.
Zitat im Artikel hervorheben
Ein häufig verwendetes Feature in Nachrichtenartikeln ist das Hervorheben besonderer Textausschnitte. So kann z. B. ein Zitat aus einer bestimmten Quelle oder eine wichtige Passage in einer größeren Schrift wiederholt werden, um die Aufmerksamkeit des Lesers auf sich zu ziehen.
Allerdings enthalten nicht alle Textausschnitte immer die gleiche Zeichenanzahl, was es schwierig macht, die gewünschte Schriftgröße mit dem Platzbedarf des Texts auf der Seite in Einklang zu bringen.
AMP bietet eine weitere Komponente, die speziell für diese Art von Situation entwickelt wurde: Die Komponente amp-fit-text
. Mit amp-fit-text
kannst du ein Element mit fester Breite und Höhe sowie eine maximale Schriftgröße definieren. Die Komponente skaliert die Schriftgröße auf intelligente Weise, um den Text an die verfügbare Breite und Höhe anzupassen.
Testen wir das. Füge zunächst die Bibliothek der Komponente zum Tag <head>
hinzu:
<script
async
custom-element="amp-fit-text"
src="https://cdn.ampproject.org/v0/amp-fit-text-0.1.js"
></script>
Füge deiner Seite Folgendes hinzu:
<amp-fit-text width="400" height="75" layout="responsive" max-font-size="42">
Big, bold article quote goes here.
</amp-fit-text>
Aktualisiere die Seite und sieh dir das Ergebnis an.
Experimentiere gerne noch weiter. Was passiert, wenn das Zitat viel kürzer ist?
<amp-fit-text width="400" height="75" layout="responsive" max-font-size="42">
Hello!
</amp-fit-text>
Und wenn es länger ist?
<amp-fit-text width="400" height="75" layout="responsive" max-font-size="42">
And the Raven, never flitting, still is sitting, still is sitting. On the
pallid bust of Pallas just above my chamber door; And his eyes have all the
seeming of a demon’s that is dreaming, And the lamp-light o’er him streaming
throws his shadow on the floor; And my soul from out that shadow that lies
floating on the floor. Shall be lifted—nevermore!
</amp-fit-text>
Zum Schluss kannst du versuchen, mit amp-fit-text
ein kurzes Textstück wie "Hallo" mit einer viel größeren Höhe (z. B. einem Wert von 400) zu erstellen und als Attributwert von "max-font-size" 42 beizubehalten. Wie wird die resultierende Seite aussehen? Ist der Text vertikal zentriert? Oder verkleinert sich die Höhe des Tags amp-fit-text
, um sich an die maximale Schriftgröße anzupassen? Versuche, mithilfe deines Wissens über das AMP Layoutsystem diese Fragen zu beantworten, bevor du den Code testest!
Weitere Informationen über amp-fit-text
findest du in der Live Demo von AMP by Example.