Block lässt sich nicht überschreiben

Ich möchte gerne die Meta-Description für Artikel via Freitext angeben.
Nur leider lässt sich der zuständige Block „frontend_index_header_meta_description“ in detail/header.tpl nicht überschreiben.
shopware/header.tpl at 5.3 · shopware/shopware · GitHub
Hat wer eine Idee?

{extends file="parent:frontend/detail/header.tpl"}

{block name='frontend_index_header_title'}{strip}
    {if $sArticle.metaTitle}{$sArticle.metaTitle|escapeHtml}{else}{$smarty.block.parent}{/if}
{/strip}{/block}

{block name='frontend_index_header_meta_description'}{strip}
Hallo Welt
{strip}{/block}

 

Hey @sonic‍,

Du kannst die Blöcke in der „detail/index.tpl“ überschreiben. Wenn eine Datei (in deinen Fall „detail/header.tpl“) inkludiert wird, dann werden die Blöcke aus der Datei in der Datei zur Verfügung gestellt, die den „{include}“-Call macht.

Viele Grüße,
Stephan Pohl  Shopware

Naja, ich würde ja gerne nur überschreiben, wenn das Freitext auch vorhanden ist, und wen nicht via smarty.block.parent das Original aufrufen. Das Parent wäre dann aber ja in header.tpl und nicht index.tpl - müsst ich mal ausprobieren - aber es sollte ja auch funktionieren, dass ich header.tpl mit header.tpl überschreibe  Wink

Nein, es geht auch nicht in der index.tpl - die meta-description wird nach wie vor aus der detail/header.tpl von Bare gezogen

Alles klar, es geht dir hier speziell um den Block „frontend_index_header_meta_description“, sorry. Wir haben ein Default-Plugin mit dem Namen „seo“. Dieses überschreibt den Block. Die Template-Datei findest du unter „frontend/plugins/seo/index.tpl“:

Viele Grüße,
Stephan Pohl  Shopware

2 Likes

Aneinandervorbeigeredet  Wearing-Sunglasses
Ich möchte schlicht über ein Textattribut/Freitext einen Text eingeben, und wenn dieser vorhanden ist, diesen für die Meta-Description verwenden. Listing, Meta-Description, Checkout-Kurzbeschreibung benutzen ja alle die Kurzbeschreibung.
Ich möchte also nur den Block überschreiben und mit meinem Text füllen. Aus irgend einen Grund sperrt ich “frontend_index_header_meta_description” aber gegen ein Überschreiben, Appenden, Prependen, “frontend_index_header_title” hingegen lässt sich ohne Probleme ändern. Ich frag mich grad, ob smarty ein Problem mit tiefere Verschachtelung und “langen” Blocknamen hat. Sonst gibt es kein Plugin etc. was da überhaupt in die Quere kommen könnte.

Muss ich es als nächstes aus einem Plugin heraus ausprobieren, oder die Meta-Description beim Kurztext lassen, und im Listing/Checkout auf ein Freitext zurückgreifen.

Edit: Im Prinzip will ich genau das machen, was das Plugin macht - soll heissen obwohl ich kein SW-Plugin für SEO benutze, funkt mir das Plugin dazwischen?

Das ist ja ein Core-Plugin und immer installiert/aktiv und wird benötigt.

Hängst du dich denn generell nach den Plugins ein mit deinem Theme?

Mir raucht grad ein wenig der Kopf, und versuche etwas zu verstehen, weil ich nicht weiß, was dieses Plugin macht und wo die Werte “$SeoMetaDescription” herkommen sollen - ich muss mal in mich gehen oder in der Doku wühlen  Halo
An der Ladereihenfolge “injectBeforePlugins” habe ich nichts angegeben bzw geändert - also SW-Default

Edit: Also müsste ich der guten Ordnung halber im Theme auch die index.tpl aus dem Plugin überschreiben (Ich denke mal, das ist die Meta-Description “Meta-Description von Artikel/Kategorien aufbereiten:” ?)

Also ich würde generell folgendes empfehlen:

Eigenem Theme 1 (InjectBeforePlugins = true)

Eigenes Theme 2 - Abgeleitet von Eigenem Theme 1 (InjectBeforePlugins = false)

Dann kannst du auch immer nochmal ein Plugin überschreiben, wenn du es musst. Ist auch das typische Setup bei größeren Projekten

Das Plugin findest du hier: shopware/engine/Shopware/Plugins/Default/Frontend/Seo at 5.3 · shopware/shopware · GitHub

1 Like

So, ein Danke an [@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski „Moritz Naczenski“)‍ und [@Stephan Pohl](http://forum.shopware.com/profile/2/Stephan Pohl „Stephan Pohl“)‍ für das Augenöffnen.
Auf das Core-SEO-Plugin wäre ich nicht von alleine gekommen. Ein einfaches klassisches Blocküberschreiben funktioniert, da muss ich auch nicht Injecten  Wearing-Sunglasses
Aber das mit dem zweistufigem Ableiten um vor und hinter einem Plugin agieren zu können, das werde ich mir merken *Danke*