SEO Urls - Artikel-Attribute

Hallo zusammen, ich habe eine Frage bezüglich der SEO Router Einstellungen. Es besteht ja die Möglichkeit ein eigenes Attribut-Feld für die URL-Struktur zu verwenden. z.B. {if $sArticle.attr4}{$sArticle.attr4}{else}{$sArticle.name}{/if} Ich habe nun ein kleines Plugin geschrieben, dass mir ein neues Feld (seo_url) in der Tabelle s_articles_attributes erstellt und in den Artikel-Details angzeigt wird. Wie kann ich nun dieses Feld in den SEO-Router Einstellungen verwenden? {if $sArticle.seo\_url}{$sArticle.seo\_url}{else}{$sArticle.name}{/if} Vielen Dank und viele Grüße Max

Hallo zusammen, ich habe gesehen, dass die Abrage in der sRewriteTable.php, in der Funktion getSeoArticleQuery(), vorgenommen wird. Kann ich diese Funktion in meinem Plugin überschreiben und mein neues Feld mit an die Abfrage hängen? Versuche es momentan so: $this-\>subscribeEvent( 'sRewriteTable::getSeoArticleQuery::replace', 'onRewriteTableSGetSeoArticleQueryReplace' ); public function onRewriteTableSGetSeoArticleQueryReplace(Enlight\_Hook\_HookArgs $args) { $return = $args-\>getReturn(); $return = " SELECT a.\*, IF(atr.name IS NULL OR atr.name='', a.name, atr.name) as name, d.ordernumber, d.suppliernumber, s.name as supplier, datum as date, d.releasedate, changetime as changed, metaTitle, at.attr1, at.attr2, at.attr3, at.attr4, at.attr5, at.attr6, at.attr7, at.attr8, at.attr9, at.attr10,at.attr11, at.attr12, at.attr13, at.attr14, at.attr15, at.attr16, at.attr17, at.attr18, at.attr19, at.attr20, at.seo\_url FROM s\_articles a INNER JOIN s\_articles\_categories\_ro ac ON ac.articleID = a.id AND ac.categoryID = ? INNER JOIN s\_categories c ON c.id = ac.categoryID AND c.active = 1 JOIN s\_articles\_details d ON d.id = a.main\_detail\_id LEFT JOIN s\_articles\_attributes at ON at.articledetailsID=d.id LEFT JOIN s\_articles\_translations atr ON atr.articleID=a.id AND atr.languageID=? LEFT JOIN s\_articles\_supplier s ON s.id=a.supplierID WHERE a.active=1 AND a.changetime \> ? GROUP BY a.id ORDER BY a.changetime, a.id "; $args-\>setReturn($return); } Vielen Dank und viele Grüße Max

Wenn du es so machen willst, brauchst du nicht zwingend die komplette Funktion überschreiben, es würde auch folgendes gehen $this-\>subscribeEvent( 'sRewriteTable::getSeoArticleQuery::after', 'addSQL' ); public function addSQL(Enlight\_Hook\_HookArgs $arguments) { $sql = $arguments-\>getReturn(); $sql = str\_replace('at.attr20', 'at.attr20, at.prefix\_seourl as seourl', $sql); return $sql; } Allerdings funktioniert das denke ich nicht mit anderen Sprachen/Sprachshops.

1 „Gefällt mir“

Hallo! Vielen Dank schon mal für deine Rückmeldung. Bei mir tut sich da leider nichts. Kann ich durch eine Ausgabe überprüfen, ob der den SQL-Befehl erweitert hat? Vielen Dank und viele Grüße

Am Komma lag es nicht … Das hatte ich entfernt :wink: Danke für deine Bemühungen. Hast du noch eine andere Idee warum es nicht funktioniert? Habe den Cache geleert, Plugin neu installiert, etc. Danke und LG

Das sollte dir eigentlich (ungetestet) die Query im Frontend ausgeben. [code] public function addSQL(Enlight_Hook_HookArgs $arguments) { $sql = $arguments->getReturn(); $sql = str_replace(‘at.attr20’, ‘at.attr20, at.cnet_seourl as seourl’, $sql); $arguments->setReturn($sql); echo "

"; print\_r(\Doctrine\Common\Util\Debug::export($sql, 3)); echo "

"; exit(); }[/code]

Vielen Dank für die Unterstützung! Jetzt funktioniert es. Keine Ahnung woran es lag. Hab es einen Tag ruhen lassen, Plugin deinstalliert und wieder installiert, Cache geleert, Urls neu generiert und nun funktioniert es. Danke noch mal und schönen Sonntag.

Du könntest mal testen ob damit auch die URLs für Sprachshops, also für Übersetzungen korrekt erzeugt werden. Das müüste so eigentlich nicht gehen.