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

SEO/Sitemap Ausgabe gemäss Status - neues Feld #273

Closed paddle07 closed 1 year ago

paddle07 commented 1 year ago

Kleine Anregung, wäre toll, wenn unter SEO neben headline, description und image zusätzlich ein Feld für Status gespeichert werden könnte (0/1). Offline Einträge würden dann automatisch mit noindex, nofollow ausgegeben und auch nicht in der Sitemap aufgeführt. Löse das aktuell mit Extension Points. Ansonsten tolles Addon, danke!!

alxndr-w commented 1 year ago

Dafür kannst du eigentlich im Query angeben, ob URLs nur von einem bestimmten Status generiert werden sollen (und ein 2. Profil anlegen, wenn du sie trotzdem erreichbar haben willst, aber nicht in der Sitemap)

paddle07 commented 1 year ago

So natürlich auch möglich ... somit müsste ich die Profil-Abfrage beim Vorschau-Link des Addons machen. Dachte nur es wäre evtl. einfacher dies direkt bei den SEO-Feldern zu intergerieren, da wahrscheinlich bei den meisten Addons ein online/offline Status der Einträge benötigt wird.

alxndr-w commented 1 year ago

Schwierige Sache, denn ob ein Eintrag tatsächlich online sein soll oder nicht hängt ja nicht nur von einem einzigen status getauftem Status-Feld ab.

Bei Relationen z.B. müsste man mehr als ein Feld angeben können. Ich glaube, das ist zu komplex, was meint @tbaddade ?

tbaddade commented 1 year ago

Die Abfrage nach einem Status kann über einen EP beeinflusst werden. Das fix einzubauen ist nicht möglich. Denn wie schon @alxndr-w anmerkte, spielen dann auch u.a. Relationen eine Rolle. Auch ist der Wert status nicht nur auf 0 und 1 beschränkt.

somit müsste ich die Profil-Abfrage beim Vorschau-Link des Addons machen

Die Abfrage solltest du schon beim Absetzen des Queries aller Vorschauen machen, damit du so wenig Datensätze wie nur möglich erholst (Performance).

<?php
$items = rex_sql::factory()->getArray('SELECT `id`, `title` FROM `rex_item` WHERE `status` = "1"');
foreach ($items as $item) {
    echo sprint('<a href="%s">%s</a>', rex_getUrl('', '', ['namespace_id' => $item['id']]), $item['title']);
}

oder

<?php
$categories = rex_sql::factory()->getArray('
    SELECT
        c.id AS cid, 
        c.title AS cname, 
        i.id AS iid,
        i.title AS iname 
    FROM rex_category AS c 
    LEFT JOIN rex_item AS i
        ON c.id = i.category_id 
    WHERE c.status = "1"
        AND i.status = "1"
    ');
paddle07 commented 1 year ago

Ok, alles klar, danke euch

alxndr-w commented 1 year ago

@paddle07 wenn das für dich passt, dann kannst du das Issue gerne schließen.