Smarty|rewrite funktioniert nicht

hi, ich habe einen eigenen Widget-Controller. Im Template möchte ich mir Artikel-Links ausgeben lassen. Das funktioniert soweit bis auf das Umschreiben der Links.  Hier werden nur Links wie 

shopware.php?sViewport=detail&sArticle=15&sCategory=4

ausgegeben. Leider keine SEO-Urls.

Mein Template sieht wie folgt aus:

{$sArticle.linkDetails|rewrite:$sArticle.articleName}

Alle Caches sind geleert. Was mache ich falsche? oder steht das rewrite im Widget nicht zur Verfügung? Im Listing etc. werden die Urls ganz normal und korrekt ausgegeben.

 

ok, ich habe jetzt noch mal ein bisschen rumprobiert.

Wenn ich das in einem a-Tag ausgebe, wird der link umgeschrieben

{*wird umgeschrieben zu Mein Artikel*}
{$sArticle.attr4}

{*wird nicht umgeschrieben Mein Artikel*}
{$sArticle.attr4}

genau das gleiche mit Kategorie-Links. Warum ist das so? Wie bekomme ich die SEO-Link ausserhalb eines a?

Ich muss das hier noch mal pushen. Kann das Problem jemand bestätigen? 

Jetzt bin ich etwas verwirrt, weil {$sArticle.linkDetails} eigenlich die Links schon als SEO ausgeben sollte. Werden überhaupt SEO-URLs erzeugt? Kannst du in der DB das sehen?

@R4M schrieb:

Jetzt bin ich etwas verwirrt, weil {$sArticle.linkDetails} eigenlich die Links schon als SEO ausgeben sollte. Werden überhaupt SEO-URLs erzeugt? Kannst du in der DB das sehen?

 Leider steht in $sArticle.linkDetails nicht der SEO-Link. SEO-Links werden aber generell erzeugt. Im Listing etc. werden die Links ja auch korrekt ausgegeben. Und wenn ich es, wie oben beschrieben, in einem a href packe, geht es ja auch. Hier scheint es einen Bug im Smarty-Plugin zugeben. Oder das ist aus irgendwelchen Gründen so gewollt – verstehe ich aber nicht.

Muss ich passen, ist mir so noch nie aufgefallen.

wo finde ich denn überhaupt die smarty pugins? es gibt ja scheinbar nciht mal mehr eine dokumentation dazu. das einzige was ich gefunden habe ist das hier Getting started with Smarty aber hier wird ja gar nciht auf die vorhandenen Plugin eingegangen.

 

ok, ich habe das Plugin nun unter /engine/Library/Enlight/Template/Plugins/modifier.rewrite.php gefunden. So wie ich das sehe macht das aber gar nichts. Kann mir jemand sagen wie das Plugin arbeitet bzw. an welcher stelle der Link umgeschrieben wird?

Scheinbar wird das in der aktuellen Shopware auch gar nciht mehr genutzt:

 @deprecated since 5.2.3 will be removed in 5.3

Also habe ich das mal in einer 5.2.20 getestet. leider das selbe Phänomen. 

Ich habe die Datei /themes/Frontend/Bare/frontend/listing/product-box/box-basic.tpl geändert:

{block name='frontend_listing_box_article_name'}
{$sArticle.linkDetails}

{$sArticle.articleName|truncate:50|escapeHtml}

{/block}

Die Ausgabe sieht so aus:

shopware.php?sViewport=detail&sArticle=153&sCategory=5

ELASTIC MÜTZE

Ich verstehe es leider nicht. Könnte das bitte mal jemand testen und bestätigen?

Vielen Dank

Hallo,

hast du schon den Array-Key ‚linkDetailsRewrited‘ von $sArticle ausprobiert? Hier sollte in jedem Fall der umgeschriebene und SEO konforme Link drin stehen

Viele Grüße aus Schöppingen

cool Michael Telgmann

@Michael Telgmann schrieb:

Hallo,

hast du schon den Array-Key ‚linkDetailsRewrited‘ von $sArticle ausprobiert? Hier sollte in jedem Fall der umgeschriebene und SEO konforme Link drin stehen

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo Michael, danke für deine Antwort. Den Key linkDetailsRewrited gibt es leider nicht. 

 

welche Shopware Version nutzt du denn?

@Michael Telgmann schrieb:

welche Shopware Version nutzt du denn?

Wie oben geschrieben nutze ich die 5.2.20 aber auch bei einer 5.2.2 das gleiche. 

ah sorry, du bewegst dich im Listing und nicht auf der Detailseite? Dann könntest du dir den Link selbst ans Template übergeben. Folgende Funktion generiert dir den SEO Link:

Shopware()->Modules()->Core()->sRewriteLink($sArticle.linkDetails, $sArticle.articleName);

Viele Grüße aus Schöppingen

cool Michael Telgmann

@Michael Telgmann schrieb:

ah sorry, du bewegst dich im Listing und nicht auf der Detailseite? Dann könntest du dir den Link selbst ans Template übergeben. Folgende Funktion generiert dir den SEO Link:

Shopware()->Modules()->Core()->sRewriteLink($sArticle.linkDetails, $sArticle.articleName);

Viele Grüße aus Schöppingen

cool Michael Telgmann

ja genau, ich bin im Listing bzw. möchte ich das später in einem Widget verwenden. die von dir genante Funktion werde ich gleuch mal testen, danke dafür.

Kannst du denn aber erklären warum  ein {$sArticle.linkDetails} nur innerhalb eines a-href den korrekten SEO-Link ausgibt? Siehe beispiel oben. Das macht doch eigentlich gar keinen Sinn.

 

@Michael Telgmann schrieb:

ah sorry, du bewegst dich im Listing und nicht auf der Detailseite? Dann könntest du dir den Link selbst ans Template übergeben. Folgende Funktion generiert dir den SEO Link:

Shopware()->Modules()->Core()->sRewriteLink($sArticle.linkDetails, $sArticle.articleName);

Viele Grüße aus Schöppingen

cool Michael Telgmann

 Hallo Michael, die von dir genannte Funktion hilft hier weiter. mein Code in meinem Widget-Controller sieht nun so aus:

$categoryId = $this->Request()->getParam('categoryId');
        $articles = Shopware()->Modules()->Articles()->sGetArticlesByCategory($categoryId);

        foreach($articles['sArticles'] as &$article){
            $article['linkDetailsRewrited'] = Shopware()->Modules()->Core()->sRewriteLink($article['linkDetails'], $article['articleName']);
        }

        $this->View()->assign('quickSelect',$articles);

Das ist ja aber im Grunde nur ein Workaround und beantwortet die eigentlich Frage nicht. Warum wird der korrekte SEO-Link nur innherhalb der a-href ausgegeben?

 

@hbee schrieb:

@Michael Telgmann schrieb:

ah sorry, du bewegst dich im Listing und nicht auf der Detailseite? Dann könntest du dir den Link selbst ans Template übergeben. Folgende Funktion generiert dir den SEO Link:

Shopware()->Modules()->Core()->sRewriteLink($sArticle.linkDetails, $sArticle.articleName);

Viele Grüße aus Schöppingen

cool Michael Telgmann

 Hallo Michael, die von dir genannte Funktion hilft hier weiter. mein Code in meinem Widget-Controller sieht nun so aus:

$categoryId = $this->Request()->getParam(‚categoryId‘);
$articles = Shopware()->Modules()->Articles()->sGetArticlesByCategory($categoryId);

foreach($articles[‚sArticles‘] as &$article){
$article[‚linkDetailsRewrited‘] = Shopware()->Modules()->Core()->sRewriteLink($article[‚linkDetails‘], $article[‚articleName‘]);
}

$this->View()->assign(‚quickSelect‘,$articles);

Das ist ja aber im Grunde nur ein Workaround und beantwortet die eigentlich Frage nicht. Warum wird der korrekte SEO-Link nur innherhalb der a-href ausgegeben?

 

Hast du dazu eine Lösung gefunden? Ich bin gerade am Bauen des Controllers.

@anfuet schrieb:

Hast du dazu eine Lösung gefunden? Ich bin gerade am Bauen des Controllers.

 Nein, ich habe daran nichts mehr geändert. weiß nicht ob der Fehler mittlerweile behoben ist.