Plugin wird nicht dargestellt, nachdem das Theme kompiliert wurde.

Hallo Shopware Community,

derzeit bin Ich an einem Plugin dran, welches nach einer Theme kompilierung nicht mehr angezeigt wird.
Wenn der Cache geleert wird und man danach die betroffen Seite im Shopware Frontend anschaut, wird das Plugin angezeigt.
Wenn nun das Theme kompiliert wird, verschwindet es.

Folgender Code steht in der php-Datei des Plugins:

public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Action_PostDispatch' => 'onPostDispatchDetail'
        ];
    }
    
    public function onPostDispatchDetail(\Enlight_Event_EventArgs $arguments)
    {
        $subject = $arguments->getSubject();
        $request = $subject->Request();
        $response = $subject->Response();
        $action = $request->getActionName();
        $view = $subject->View();

        $view->addTemplateDir( __DIR__. '/Views');
        $view->extendsTemplate('frontend/listing/product-box/box-basic_extension.tpl');
        $view->assign("tbe_csiw_buttoncolor", Shopware()->Config()->getByNamespace('xxx', 'buttoncolor'));
        $view->assign("tbe_csiw_buttoncolor_end", Shopware()->Config()->getByNamespace('xxx', 'buttoncolor_end'));
    }

Das dazugehörige Template sieht folgendermaßen aus:

{extends file='parent:frontend/listing/product-box/box-basic.tpl'}

    {block name="frontend_index_header_css_screen"}
        {$smarty.block.parent}
        

        {if $theme.asyncJavascriptLoading}
            
                var tbe_is_async_js = true;
            
        {else}
            
                var tbe_is_async_js = false;
            
        {/if}
    {/block}

    {block name="frontend_index_header_javascript_jquery"}
        {$smarty.block.parent}
        
    {/block}

    {block name='frontend_listing_box_article_actions'}
        {$smarty.block.parent}
        {if $sliderInitOnEvent == "onShowContent-related"}
            {if $Controller == "detail" && $sAction == "index"}
                Test
            {/if}
        {/if}
    {/block}

    {block name='frontend_listing_box_article_price_info'}
        {$smarty.block.parent}
        {if $sliderInitOnEvent == "onShowContent-related"}
            {if $Controller == "detail" && $sAction == "index"}
                {if $sArticle.prices|@count gt 1}
                    
                        
                            Menge
                            Stückpreis
                            Grundpreis
                        
                        {foreach $sArticle.prices as $blockPrice}
                            
                                {block name="frontend_detail_data_block_prices_table_body_row"}
                                    {block name="frontend_detail_data_block_prices_table_body_cell_quantity"}
                                        

                                            Test
                                        
                                    {/block}
                                    {block name="frontend_detail_data_block_prices_table_body_cell_price"}
                                        
                                            Test
                                        
                                    {/block}

                                    {block name="frontend_detail_data_block_prices_table_body_cell_reference_price"}
                                        
                                            Test
                                        
                                    {/block}

                                {/block}
                            
                        {/foreach}
                    
                {/if}
            {/if}
        {/if}
    {/block}

Die Blöcke “frontend_index_header_css_screen” und “frontend_index_header_javascript_jquery” des Templates werden geladen.
Aber der Block “frontend_listing_box_article_price_info” wird nicht angezeigt.

Hat dazu vielleicht jemand eine Idee?

Mit freundlichen Grüßen,

Rene Albers

Bin ja sehr einfach gestrickt… ist das hier erfüllt?

{if $sArticle.prices|@count gt 1}

Ist es ein Array und hat mehr als ein Element?

 

Habe gerade nochmal Nachgeschaut.
Es geht auch um den “Block frontend_listing_box_article_actions”.
Der andere Block ist gerade erstmal egal.
Daher fällt das if weg.

Es geht auch um den „Block frontend_listing_box_article_actions“.

 Könnte man ja testen:

{block name='frontend_listing_box_article_actions'}
  {$smarty.block.parent}
  test1
  {if $sliderInitOnEvent == "onShowContent-related"}
    test2
    {if $Controller == "detail" && $sAction == "index"}
      test3
    {/if}
  {/if}
{/block}

 

Gerade getestet.
Keines meiner Tests wird angezeigt.
Und gerade nochmal den genauen Prozess zum herbeiführen des Fehlers durchgeprüft.
Cache leeren -> Seite aufrufen, auf der das Plugin angezeigt werden soll (Wird auch angezeigt) -> Theme kompilieren -> Plugin nicht mehr da