reger
Returning Observer

Open Graph-Tags für dynamische Seiten

Hallo,

Folgendes:

Die META-Tags og:title, og:image, og:url sollen entsprechend für jede Seite gesetzt werden. Das geschieht für normale Seiten in der Seitenvorlage. Hier haben wir alles zur Verfügung, was wir brauchen (Seitentitel, erstes (Schmuck-)Bild und die URL sowieso). Funktioniert für "normalen" Content.  Soweit, so gut.

Wenn es sich um eine Seite handelt, die Inhalt aus Datenquellen lediglich auflistet, funktioniert das Prinzip auch noch. Gängiges Beispiel sind Aktuelle Meldungen/Pressemitteilungen/News.
Wenn ich jetzt in die jeweilige Detailansicht schalte, habe wir es mit einer "normalen" Seite mit einem entsprechenden Absatz und der dazugehörigen Absatzvorlage zu tun. Und jetzt hätte ich natürlich gerne den Titel/Überschrift aus meinem Datenquellensatz  in den META-Tags und nicht den der Seite, die an dieser Stelle ja eigentlich nur Mittel zum Zweck ist. Den META-Tag og:title habe ich an dieser Stelle bereits gesetzt und kann ihn m.W. auch nicht dynamisch verändern. Zu dem Zeitpunkt, wo ich die richtige Information aus dem Absatz habe, ist es zu spät.

Gibt es dazu schlaue Ideen? (Oder noch besser: eigentlich ist es ganz einfach und mal wieder zu kompliziert gedacht...)

Gruß

Gaby

3 Replies
bIT_sosswald
Returning Responder

Hallo Gaby,

wir haben uns ein Konstrukt gebaut, welches Prüft ob es sich um eine Kontentprojektionsseite handelt oder nicht und in Abhängigkeit des Ergebnisses die entsprechenden Werte ermittelt und ins HTML ausgibt.

Dabei haben wir das Template welches für die Kontentprojektionsseite verwendet wird in den ProjectSettings definiert. (In unserem Fall war das die beste Lösung...)

$CMS_SET(#global.pageContext["isContentPage"], #global.page.getTemplate().getUid().equals(ps_contentpage_template.get().getUid()) && #global.multiPageParams.getData.size > 0)$

...

$CMS_IF(isContentPage)$

$CMS_SET(set_ft_title_tag, #global.multiPageParams.data.get(#global.pageParams.index).headline.convert2.trim + " | " + ps_site_name.toString().trim())$

$CMS_ELSE$

$CMS_SET(set_ft_title_tag, set_ft_page_name.toString().trim() + " | " + ps_site_name.toString().trim())$

$CMS_END_IF$

$CMS_IF(isContentPage)$

$CMS_SET(set_ft_og_title, set_ft_title_tag)$

$CMS_ELSE$

$CMS_IF(pt_overwrite_og_title == null || !pt_overwrite_og_title || pt_og_title == null || pt_og_title.toString().trim().isEmpty())$

$CMS_SET(set_ft_og_title, set_ft_page_name.toString().trim())$

$CMS_ELSE$

$CMS_SET(set_ft_og_title, pt_og_title.toString().trim())$

$CMS_END_IF$

$CMS_END_IF$

...

<meta property="og:title" content="$CMS_VALUE(set_ft_og_title.convert2)$"$--

In deinem Fall kann es evtl. sein, dass du anders Prüfen musst, die Werte anders Ermitteln musst, etc. Aber das Prinzip sollte sich zumindest übertragen lassen. 🙂

Grüße

Sandro

Hallo Sandro,

erst mal vielen Dank. Das hört sich gut, müsste ich in einer ruhigen Minute mal checken ...

Gruß

Gaby

0 Kudos

Hallo Gaby, Hallo Sandro,

meines Wissens nach machen wir das auf e-Spirit.com ähnlich, nur dass wir sogar drei mögliche Quellen haben:

1. Content-Projektion

2. Page bzw. PageTemplate

3. Metadaten (als Fallback)

Theoretisch könnte man als vierte Quelle sogar noch Strukturvariablen hinzunehmen. Wir prüfen erst 1 und wenn wir nichts finden gehen wir zu Quelle 2 und schließlich zu 3, wenn 2 nichts anzubieten hat. Strukturvariablen würde ich zwischen 2 und 3 verwenden.

So hat man immer einen Titel, Schlüsselworte und eine Kurzbeschreibung für die SEO. Wenn man dann noch für die Formulare Default-Values hinterlegt, hat man eigentlich die Felder immer befüllt. Bei der Content-Projektion (Presse- oder Blog-Artikel) werden Titel und Kurzbeschreibung aus dem Blogtitel bzw. Teasertext automatisch übernommen. Der Redakteur muss bei uns nur eine Endkontrolle durchführen, was vor allem bei zu langen Texten passiert.

Grüße

Marian

0 Kudos