Servus,
da die Tage jetzt deutlich kürzer werden, habe ich mir gedacht, dass es durchaus nützlich sein könnte (clickbaiting auf sozialen Netzwerken), wenn innerhalb einer Nachricht ein OG-Image mit Wasserzeichen in Abhängigkeit zu den Inhaltselementen eingebunden wird.
Aufgabe: Eine Nachricht enthält eine Bildergalerie, also soll z.B. für Facebook anhand des OG-Tags ein kombiniertes OG-Image aus »singleSRC« und »olverlay_gallery.png« erzeugt werden.
Ich bin bisher zu folgendem Lösungsansatz gekommen (funktioniert sogar). Mir ist auch klar, dass ich den Part noch in eine Helper-Klasse bzw. Model auslagern werde.
Frage: Ich bin mir absolut unsicher ob es wirklich so einfach ist - bzw. ob man die Aufgabe so lösen sollte. Es kommt mir aufgrund der Einfachheit einfach falsch vor.
PHP-Code:
<?php
if($this->singleSRC):
$width = 1200;
$height = 630;
if(strpos($this->text, "gallery"):
$overlay="./assets/news_overlay/overlay_gallery.png";
function watermark_ogimage($target, $wtrmrk_file, $newcopy) {
$watermark = imagecreatefrompng($wtrmrk_file);
imagealphablending($watermark, false);
imagesavealpha($watermark, true);
$img = imagecreatefromjpeg($target);
$img_w = imagesx($img);
$img_h = imagesy($img);
$wtrmrk_w = imagesx($watermark);
$wtrmrk_h = imagesy($watermark);
$dst_x = ($img_w / 2) - ($wtrmrk_w / 2);
$dst_y = ($img_h / 2) - ($wtrmrk_h / 2);
imagecopy($img, $watermark, $dst_x, $dst_y, 0, 0, $wtrmrk_w, $wtrmrk_h);
imagejpeg($img, $newcopy, 100);
imagedestroy($img);
imagedestroy($watermark);
}
watermark_ogimage($this->urlEncode($this->singleSRC),$overlay, $this->getImage($this->urlEncode($this->singleSRC), $width, $height , 'crop'));
endif;
$ogimage = $this->getImage($this->urlEncode($this->singleSRC), $width, $height , 'crop');
$GLOBALS['TL_HEAD'][] = '<meta property="og:url" content="' . \Environment::get('url') . '/' . \Environment::get('request') . '" />';
$GLOBALS['TL_HEAD'][] = '<meta property="og:image" content="' . \Environment::get('base') . $ogimage . '" />';
$GLOBALS['TL_HEAD'][] = '<meta property="og:image:width" content="' . $width . '" />';
$GLOBALS['TL_HEAD'][] = '<meta property="og:image:height" content="' . $height . '" />';
endif;
?>
Lesezeichen