tbaddade / redaxo_url

REDAXO 5 AddOn zur URL-Generierung für eigene AddOns (ehemals Url Control, ehemals Frau Schultze)
MIT License
46 stars 22 forks source link

Neue getTags() Methode aus YRewrite nutzen #254

Closed TobiasKrais closed 1 year ago

TobiasKrais commented 2 years ago

Nachdem https://github.com/yakamara/redaxo_yrewrite/pull/310 gemerged wurde sind Anpassungen nötig, damit die Methode Seo:getTags() auch die neuen OG Tags von Artikeln ausgibt.

tbaddade commented 2 years ago

Welche neuen OG Tags sind das? In dem verlinkten PR sind m.E. keine neuen zu sehen.

TobiasKrais commented 2 years ago

Wenn eine URL nicht von diesem URL Addon erzeugt wird, gibt die Methode Seo::getTags() nur wenig Inhalte aus. Hier der Vergleich. Zuerst der Aufruf der Methode Seo::getTags() wenn die URL nicht vom url Addon erzeugt wird:

<title>Titel</title>
<meta name="description" content="Beschreibung">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://www.example.org/de/" />

Dann die Ausgabe wenn eine URL vom url Addon erzeugt wird:

<title>Titel</title>
<meta name="description" content="Beschreibung">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://www.example.org/de/url-addon-url/" />
<meta property="og:title" content="Titel" />
<meta name="twitter:title" content="Titel" />
<meta property="og:url" content="https://www.example.org/de/url-addon-url/" />
<meta name="twitter:url" content="https://www.example.org/de/url-addon-url/" />
<link rel="alternate" hreflang="de" href="https://www.example.org/de/url-addon-url/" />
<link rel="alternate" hreflang="en" href="https://www.example.org/en/url-addon-url/" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="image" content="https://www.example.org/media/seo-image.jpg" />
<meta property="og:image" content="https://www.example.org/media/seo-image.jpg" />
<meta name="twitter:image" content="https://www.example.org/media/seo-image.jpg" />
<meta property="og:image:width" content="614" />
<meta property="og:image:height" content="869" />

Es wäre toll, wenn die Methode Seo::getTags() auch bei Redaxo URLs ein vollständiges Ergebnis liefert.

tbaddade commented 2 years ago

Es wäre toll, wenn die Methode Seo::getTags() auch bei Redaxo URLs ein vollständiges Ergebnis liefert.

Das sollte doch jetzt von yrewrite geliefert werden. Das Url-AddOn kümmert sich nur um Datensätze die das Url-AddOn kennt.

TobiasKrais commented 2 years ago

Ja, das stimmt. Ich habe meinen Code auch angepasst (https://github.com/TobiasKrais/d2u_helper/blob/8a4d4c56725ce6e22b4097eb41d10e23a50b76e8/lib/d2u_addon_frontend_helper.php#L199-L214). Es könnte aber das eine oder andere Projekt geben, das die Änderung nicht bemerkt und somit nicht profitiert.

Lösung wäre eine einfache Änderung im Code: man prüft, ob das url Addon verantwortlich ist und wenn nicht wird einfach die Methode vom Rewriter aufgerufen und ausgegeben.

tbaddade commented 2 years ago

Lösung wäre eine einfache Änderung im Code: man prüft, ob das url Addon verantwortlich ist und wenn nicht wird einfach die Methode vom Rewriter aufgerufen und ausgegeben.

Das macht man zumeist schon über das Auflösen der Url.

Ich kann mir vorstellen, dass das Url-AddOn sich direkt an den EP hängt und dann selbst die Ausgabe beeinflusst.

alxndr-w commented 2 years ago

Da man in URL-Profilen ja bspw ein Meta--SEO-Bild-Feld festlegen kann, wäre es sinnvoll, wenn dieses auch automatisch verwendet wird. So war's glaube ich gemeint von @TobiasKrais

tbaddade commented 2 years ago

Da man in URL-Profilen ja bspw ein Meta--SEO-Bild-Feld festlegen kann, wäre es sinnvoll, wenn dieses auch automatisch verwendet wird.

Das wird bereits hier berücksichtigt

TobiasKrais commented 2 years ago

Ja, bei URLs die vom url Addon erzeugt werden, wird es berücksichtigt, aber nicht bei URLs die von YRewrite erzeugt werden. Ich bin mir nicht sicher, ob ihr verstanden habt, was ich meine. Lasst es mich nochmals aus historischer Sicht erklären:

Bisher war der Output der Meta Tags auf gewöhnlichen Redaxo Artikelseiten beim url Addon und von YRewrite ziemlich gleich. Handelte es sich um eine URL die durch das url Addon erzeugt wurde, war der Output sogar viel besser, da hier Open Graph schon lang berücksichtigt wird. Deshalb habe ich YRewrite gar nicht mehr abgefragt sondern für alle Seiten die das url Addon verwenden, folgenden Code auf allen Seiten verwendet:

$urlSeo = new Url\Seo();
$meta_tags = $urlSeo->getTags();

Das ist mir jetzt zum Nachteil, denn für gewöhnliche Artikel erhalte ich keine Open Graph Tags wie YRewrite das jetzt kann. Es wäre doch super, wenn hier auf die neue getTags() Funktion des YRewrite Addon zurückgegriffen wird, so dass immer OG Tags ausgegeben werden, also nicht nur auf URLs die vom url Addon generiert werden, sondern auch auf "herkömmlichen" Artikel URLs. Ist euch jetzt klarer, was ich meine?

tbaddade commented 2 years ago

Nur so als Idee:

<?php
\rex_extension::register('YREWRITE_SEO_TAGS', function($ep) {
    $yrewriteTags = $ep->getSubject();

    \rex_extension::register('URL_SEO_TAGS', function($ep) use ($yrewriteTags) {
        $urlTags = $ep->getSubject();

        return array_merge($yrewriteTags, $urlTags);
    });

    $seo = new Url\Seo();
    $urlTags = $seo->getTags();
});
?><!DOCTYPE html>
<html>
<head>
    <?php
    $seo = new rex_yrewrite_seo();
    echo $seo->getTags();
    ?>
</head>
</html>

Ich denke aber ich verstehe jetzt was du meinst. Sobald es keine Url-AddOn Seite ist, wird hier abgebrochen.

TobiasKrais commented 2 years ago

Ja genau das meine ich. Es wird abgebrochen. Ich könnte mir so eine Lösung wie du schreibst direkt im Code des url Addons vorstellen. Fände ich sehr schick.

alxndr-w commented 1 year ago

Für mich zum Nachvollziehen, welches Verhalten wurde jetzt erwirkt?

tbaddade commented 1 year ago

Url überschreibt jetzt die Tags von yrewrite und es gehe so keine mehr verloren. Im Template am besten jetzt das verwenden:

$seo = new rex_yrewrite_seo();
echo $seo->getTags();

Url hakt sich dann bei yrewrite ein. Wenn ihr hier Probleme seht, dann gern melden.

alxndr-w commented 1 year ago

Toll, das habe ich mir schon lange gewünscht. Ich gebe zeitnah Feedback.