Blöcke aus Pluginh überschreiben (mit neuem plugin)

Hi, ich habe folgendes Problem: Ich wollte in der Suchergebnissliste die header.tpl erweitern bzw überschreiben. Da dies anscheinend nicht möglich ist (habe gleiches auch in einem anderen Beitrag hier gelesen), habe ich mir ein kleines Plugin dafür geschrieben. Dies funktioniert soweit auch einwandfrei, mein erstes Ziel title und robots innerhalb der Suchergebnisse “hart” zu überschreiben bzw. den title tag mit Suchbegriff, Filterwerten etc. zu befüllen habe ich erreicht. Nun wollte ich aber noch in der Mitte unter dem Text “Zu %Suchbegriff% wurden %Anzahl% Artikel gefunden!” die gesetzten Filterwerte ausgeben. Wohlmöglich könnte ich einfach die .tpls der Fuzzysearch erweitern schöner fände ich es aber dies gleich im Plugin mit zu regeln, und genau das funktioniert nicht. Mit anderen worten ich kann in meinem Plugin den Block “SearchHeadline” der fuzzy search weder überschreiben noch erweitern o.ä… Ich könnte mir gut vorstellen das das Plugin in einer höheren Instanz läuft und ich deshalb dort nicht rankomme. Gibt es nun irgendeine Möglichkeit dies zu lösen? Über einen Hinweis würde ich mich sehr freuen. Mit freundlichen Grüßen

Hi, kann mir hier wirklich keiner weiterhelfen?

Hi, da die header.tpl, in der diese Blöcke sind, selber ein Block ist, muss zuerst dieser überschrieben werden. Das kannst du z.B. so machen: {block name='frontend\_index\_header'} {include file="frontend/search/header.tpl"} {/block} Da drin kannst du dann die SEO-Blöcke überschreiben: {\* Keywords \*} {block name="frontend\_index\_header\_meta\_keywords"}...{/block} {\* Description \*} {block name="frontend\_index\_header\_meta\_description"}..{/block} Heiner

Hi, ich habe nun meinen Fehler entdeckt. Es gibt an meiner gewünschten Stelle garkeinen Block zu austauschen, ich hatte blöder weise immer nur versucht einen Textblock zu tauschen :happy: also meine Frage hat sich damit erledigt. Da ich mir eh die Werte aus der DB neu ziehen muss werde ich bei der Pluginlösung bleiben auch wenn man es hätte vielleicht auch anders lösen können. Trotzdem vielen Dank für die Hilfe

Hi, meion erstes Problem hatte sich ja bereits erledigt, nun bin ich aber auf ein weiteres gestoßen. Ich versuche das mal so genau irgend möglich zu erklären: Mein Plugin sollte ja hart den Block „frontend_index_header_meta_robots“ überschreiben. Ziel dabei ist es, egal welche Backend einstellung im SEO Plugin gesetzt sind, auf den Suchergebnissseiten (und zwar auf allen also auch auf den mit parametierten URLs) diese „hart“ zu überschreiben. Dies funktioniert auch solange man nicht den wert „&n=xy“ (Artikel per Seite) in der URL zu hängen hat. Sobald aber dieser wert reinkommt wird mein Plugin nichtmehr beachtet. Ich habe nunh schon verschiedene Sachen probiert wie zB die Variable „SeoMetaRobots“ vom Plugin schreiben zu lassen, den Block „frontend_index_header_meta_robots“ per .tpl Datei vom Plugin zu überschreiben und auch verschiedene Events habe ich ausgetestet. Das sowohl der Weg über das schreiben der Variable wie auch der des überschreibens des Blockes ansich funktionieren kann ich ja direkt nachvollziehen, nur solange das „&n=xy“ nicht in der URL erscheint. Ich kann nun natürlich die tpl Datei des SEO Plugins modifizieren, nur möchte ich trotzdem gerne wissen ob es an der Stelle eine schönere Möglichkeit gäbe. Die Frage ist ja warum das so passiert gibt es eine art Reihenfolge in der die Plugins abgearbeitet werden oder gar eine anpassbare Priorisierung? Am liebsten wäre mir der Weg das ich die eigentliche Variable „SeoMetaRobots“ einfach mit einem neuen Wert befüllen kann. Dieser darf dann aber eben nichtmehr vom SEO Modul angefasst werden. Über diesen Weg könnte ich mir jede weitere Anpassung am Template sparen und wäre mit einer einfachen Plugin installation fertig. Vielen Dank für eure Hilfe Liebe Grüße

Ich hatte einmal ein ähnliches Problem mit einer Variable, die ich in einem Event ändern wollte, was aber nicht geklappt hat. Das hat daran gelegen, dass die Variable von einem weiteren Plugin geändert wurde. Ich habe dann einfach beim Erstellen des Events die höhere Priorisierung gegeben (500 in meine Plugin, 200 im Plugin von Shopware), und dann konnte ich ide Variable überschreiben.

Hi, das hört sich ja perfekt an. Also erstmal vielen Dank für die Antwort, genau nach soetwas habe ich ja gesucht. Eine Priorisierung der Plugins/Events aber wie genau kann man das umsetzen? Siue schreiben etwas von einem Zahlenwert mit dem man das steuern kann? Das ist einfach super wenn ich jetzt noch wüsste wo ich diesen mitgeben kann? Vielen Dank für die Hilfe Viele Grüße

Beim Erstellen des Events kann man diese Zahl mitgeben. So sieht es bei mir aus: $event = $this-\>createEvent( 'Enlight\_Controller\_Action\_PostDispatch', 'modifyBasketAmount', 1500 // 1500 um das Plugin ControllerBase zu "überschreiben" ); $this-\>subscribeEvent($event);

Super vielen Dank das wusste ich nicht das es da eine solche Möglichkeit gibt. Danke für die Hilfe ich werde das bei gelegenheit mal testen und dann geb ich nochmal bescheid bzw markiere den thread als gelöst. Viele Grüße Lars Lorenz