Ich hänge mich mal kurz hier rein und poste eine Lösung, die für mich funktioniert. Sie ist aus dem Zusammentragen verschiedenen Quellen, u.a. auch der Basis von erdmann-freunde.de, entstanden.
Also, ganz am Anfang meines Nachrichtenleser-Templates baue ich folgendes ein:
PHP-Code:
<?php
$GLOBALS['socialImage'] = $this->singleSRC;
?>
Dann verändere ich das Template für die fe_page, und zwar wie folgt:
PHP-Code:
<?php $this->extend('fe_page') ?>
<?php $this->block('meta'); ?>
<?php
$pageUrl = $this->replaceInsertTags( '{{env::url}}' );
$pageRequest = $this->replaceInsertTags( '{{env::request}}' );
$pageThisUrl = $pageUrl.'/'.$pageRequest;
if($GLOBALS['socialImage'])
{
$PageImage = $pageUrl.'/'.$GLOBALS['socialImage'];
}
else
{
$PageImage = $pageUrl.'/files/public/images/social/facebook/poster.jpg';
}
$PageImageSize = GetImageSize($PageImage);
$PageDescription = 'Ein Standard-Meta-Description-Text, der angezeigt wird, wenn es sonst keinen geben sollte.';
?>
<meta name="robots" content="<?= $this->robots ?>">
<meta name="description" content="<?php if ($this->description!='') { echo $this->description; } else { echo $PageDescription; } ?>">
<meta name="generator" content="Contao Open Source CMS">
<meta property="og:locale" content="de_DE">
<meta property="og:type" content="website">
<meta property="og:title" content="<?= $this->title ?>">
<meta property="og:description" content="<?php if ($this->description!='') { echo $this->description; } else { echo $PageDescription; } ?>">
<meta property="og:image" content="<?= $PageImage; ?>">
<meta property="og:image:url" content="<?= $PageImage; ?>">
<meta property="og:image:width" content="<?= $PageImageSize [0]; ?>">
<meta property="og:image:height" content="<?= $PageImageSize [1]; ?>">
<meta property="og:url" content="<?= $pageThisUrl ?>">
<meta property="og:site_name" content="<?= $PageDescription; ?>">
<meta name="twitter:image" content="<?= $PageImage; ?>">
<meta name="twitter:card" content="summary">
<meta name="twitter:description" content="<?php if ($this->description!='') { echo $this->description; } else { echo $PageDescription; } ?>">
<meta name="twitter:title" content="<?= $this->title ?>">
<?php $this->endblock(); ?>
<?php $this->block('body') ?>
...
In der Dateiverwaltung lege ich zuvor unter
/files/public/images/social/facebook/poster.jpg
ein Standard-Facebook-Bild ab,
und ich schreibe eine feste $pageDescription rein, für den Fall dass in der individuellen Seite keine definiert sein sollte (könnte man auch über ein Inserttag von einem Content Element beziehen, um dem Redakteur eine einfache Änderung zu erlauben.)
Sicherlich noch nicht das ganz Gelbe vom Ei, aber für Seiten, die hauptsächlich News-Beiträge auf Facebook teilen möchten, reicht das in meinem Fall so aus. So etwas wie das "Ultimative Social Sharing"-Plugin für Contao habe ich bisher leider nicht gefunden ;-) Das würde dann alle Situationen berücksichtigen und vllt. auch das flexible Erweitern um eigene Meta-Tags erlauben - inkl. festlegbaren default-Werten je Meta-Tag und entsprechenden Eingabefeldern je Seite/News/Event usw. ... wenn man's richtig zu Ende denkt, ist das schon ein recht komplexes Thema
Lesezeichen