Moin, ich will über ein Plugin ein die sBlogs Variabel überschreiben: $event = $this-\>createEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Index', 'onPostDispatchIndex' ); $this-\>subscribeEvent($event); ... ... public static function onPostDispatchIndex(Enlight\_Event\_EventArgs $args) { $request = $args-\>getSubject()-\>Request(); $response = $args-\>getSubject()-\>Response(); $view = $args-\>getSubject()-\>View(); if (!empty(Shopware()-\>Config()-\>BlogCategory)) { $view-\>sBlog['sArticles'] = 'test'; } var\_dump($view-\>sBlog['sArticles']); }
Das geht aber nicht. In dem Array ist immer der originale Inhalt. Was mache ich falsch? Danke
So aus dem Bauch heraus: die „if“-Abfrage greift nicht? Was ist, wenn Du die Variable direkt änderst?
Doch die IF greift. Ich habe die dump Ausgabe auch schon in die IF gesteckt. Die Ausgabe kommt, aber eben mit dem original Inhalt. Vllt stimmt oben mit dem CreatEvent was nicht. Ich habe es nun über einen Umweg versucht. 1. Neue Variabel $view->sOttschoBlog 2. extendsTemplate und Blog BLOCK im Template überschrieben. public static function onPostDispatchIndex(Enlight\_Event\_EventArgs $args) { $request = $args-\>getSubject()-\>Request(); $response = $args-\>getSubject()-\>Response(); $view = $args-\>getSubject()-\>View(); if (!empty(Shopware()-\>Config()-\>BlogCategory)) { $sql = "MEIN SELECT"; $articles = Shopware()-\>Db()-\>fetchAll($sql); $view-\>sOttschoBlog = $articles; $view-\>addTemplateDir(dirname(\_\_FILE\_\_).'/View/'); $view-\>extendsTemplate('templates/index.tpl'); } return; }
[code] {block name=‘frontend_home_index_blog’} {* Blog Articles *} {if $sOttschoBlog|@count}
{se name=‘WidgetsBlogHeadline’}{/se}:
{foreach from=$sOttschoBlog item=article key=key name=“counter”} {include file=“frontend/blog/box.tpl” sArticle=$article key=$key homepage=true} {/foreach}
{/if} {/block} [/code] Hier Live und in Farbe: http://testshop.ottscho.de/ Komischerweise habe ich nun den Blog BLOCK doppelt. Ich kann mir nicht erklären warum. Danke dir für deine Hilfe.
Optimale Lösung wäre für mich einfach die $view->sBlog[‘sArticles’] zu überschreiben. Das sollte ja eig. gehen. Shopware :shopware: habt ihr ne Idee?
Klassisches Referenz-/Kopieproblem… $blog = $view-\>sBlog; if (!empty(Shopware()-\>Config()-\>BlogCategory)) { $blog['sArticles'] = 'test'; $view-\>sBlog = $blog; } var\_dump($view-\>sBlog['sArticles']);
Wie immer, Erstklasse Merci