Ist es möglich in einem Backendplugin Frontendtemplates zu überschreiben

Hallo,

ich schreibe gerade ein Backendplugin, welches die Artikelanischt mit einem neuen Feld erweitert. Das funktioniert auch alles wunderbar. Nun würde ich gerne im selben Plugin Änderungen am Frontend vornehmen.

 

Dazu habe ich folgendes gemacht

$this->subscribeEvent("Enlight_Controller_Action_PostDispatch_Frontend_Listing", "onPostDispatchListing");

public function onPostDispatchListing(Enlight_Event_EventArgs $args)
    {
        $controller = $args->getSubject();
        $request = $controller->Request();
        $response = $controller->Response();
        $view = $controller->View();
		$view->addTemplateDir($this->Path() . 'Views/');
        $sArticles = $view->sArticles;
        if( !empty($sArticles) ) 
        {
            foreach( $sArticles as &$article ) 
            {
				$article = $this->addAvailableFrom($article);
            }
            $view->sArticles = $sArticles;
        }

    }

Leider werden weder die änderungen an den Frontendtempaltefiles übernommen, noch wird $sArticle nicht das available_from feld hinzugefügt.

Habe „Spaßeshalber“ in meiner Bootstrap.php von meinem Theme den Code von oben hinzugeügt. Dort funktioniert es sofort perfekt. 

Habe nun die Vermutung, dass es nicht möglich ist, von einem Backendplugin Änderungen am Frontend zu machen.

 

Hoffe es kann wer helfen.

 

Liebe Grüße

Hallo,

da gibt es keine wirkliche Trennung, dass sollte genauso funktionieren wie überall anders auch.

Wird dein Event denn registriert? Das könntest du in der s_core_subscribes nachsehen. Alternativ mal eine Ausgabe einbauen, also sowas:

public function onPostDispatchListing(Enlight_Event_EventArgs $args)
    {
        die('wird ausgeführt');
    }

 

Ich weiß zwar nicht warum aber nach der Änderung auf:

$view->addTemplateDir(__DIR__ . ‚/Views‘);

funktioniert nun alles.

Nun muss ich noch eine schönere Lösung finden das ganze zu nutzen. Hintergrund ist das $availableFrom und $avaiableTo des Artikels mal zu nutzen. Im Backend kann ich nun Datum und Uhrzeit wählen, von wann bis wann der Artikel gelistet werden soll im Frontend.

Momentan mache ich die Abfrage nun noch in der listing.tpl im Frontend ({foreach $sArticles as $sArticle} -> Abfrage nach Datum und Vergleich mit aktuellem Datum).

Wäre schöner wenn die Einträge direkt vorher gefiltert werden würden.

 

LG