Plugin erweitern

Hallo zusammen,

ich erweitere gerade ein Plugin, welches im Ordner custom liegt. Es scheint allerdings so zu sein, dass mein Plugin die falsche tpl überschreibt und somit nicht die des zu erweiternden Plugins.

 'onPreDispatch',
            'Theme_Compiler_Collect_Plugin_Less' => 'onGetLess',
        ];
    }
    
    public function onPreDispatch(Enlight_Event_EventArgs $arguments)
    {
        $controller = $arguments->getSubject();
        $controller->View()->addTemplateDir( __DIR__. '/Views');
        $controller->View()->extendsTemplate('frontend/listing/box_article.tpl');
    }

    /**
     * @return ArrayCollection
     */
    public function onGetLess()
    {
        $less = new LessDefinition(
            [],
            [$this->getPath() . '/Views/frontend/_public/src/less/variationPreview.less'],
            $this->getPath()
        );

        return new ArrayCollection([$less]);
    }

    public function enable()
    {
        return [
            'success' => true,
            'invalidateCache' => ['backend', 'frontend', 'theme']
        ];
    }

    public function disable()
    {
        return [
            'success' => true,
            'invalidateCache' => ['backend', 'frontend', 'theme']
        ];
    }
}

 

 

Ich versuche, die box_article.tpl des Plugins zu überschreiben, glaube aber, dass das extend hier falsch ist bzw. dieses den falschen Pfad nimmt:

{extends file="parent:frontend/listing/box_article.tpl"}

{block name="frontend_listing_box_article_includes"}
    {if !$sArticle.tcinn_variants ||
        (!$tc_vil_is_enabled_in_sliders && $productBoxLayout == 'slider')}
        {$smarty.block.parent}
    {else}
        
            {$smarty.block.parent}
        
        {$originalSArticle = $sArticle}
        {foreach $originalSArticle.tcinn_variants as $variant}
            {$sArticle = $variant}
            
                {$smarty.block.parent}
            
        {/foreach}
        {$sArticle = $originalSArticle}
        
            {if $sArticle.tcinn_variant_areas['left']}
                {$bar_variant_options = $sArticle.tcinn_variant_areas['left']}
                {$bar_config = $tc_vil_bar_configs.left}
                
					{strip}
                    
                        {$sArticle.tcinn_variant_areas_meta['left']['title']}
                        {foreach $bar_variant_options as $option}
                            
                                {if $option.thumbnail}
                                    
                                {else}
                                    
                                        {$option.optionname}
                                    
                                {/if}
                            
                        {/foreach}
                        {if $sArticle.tc_vil_left_has_plus}
                            
                                
                                    +
                                
                            
                        {/if}
                    
					{/strip}
                
            {/if}
            {if $sArticle.tcinn_variant_areas['right']}
                {$bar_variant_options = $sArticle.tcinn_variant_areas['right']}
                {$bar_config = $tc_vil_bar_configs.right}
                
					{strip}
                    
                        {foreach $bar_variant_options as $option}
                            
                                {if $option.thumbnail}
                                    
                                {else}
                                    
                                        {$option.optionname}
                                    
                                {/if}
                            
                        {/foreach}
                        {if $sArticle.tc_vil_right_has_plus}
                            
                                
                                    +
                                
                            
                        {/if}
                    
					{/strip}
                
            {/if}
            {if $sArticle.tcinn_variant_areas['bottom']}
                {$bar_variant_options = $sArticle.tcinn_variant_areas['bottom']}
                {$bar_config = $tc_vil_bar_configs.bottom}
                
					{strip}
                    
                       	{$sArticle.tcinn_variant_areas_meta['bottom']['title']}
                        {foreach $bar_variant_options as $option}
                            
                                {if $option.thumbnail}
                                    
                                {else}
                                    
                                        {$option.optionname}
                                    
                                {/if}
                            
                        {/foreach}
                        {if $sArticle.tc_vil_bottom_has_plus}
                            
                                
                                    +
                                
                            
                        {/if}
                    
					{/strip}
                
            {/if}
        
    {/if}
{/block}

 

Hat eventuell jemand eine Idee, wo der Fehler liegen könnte?

Hallo,

 

was heißt denn, dass es die falsche tpl Datei überschreibt? Stimmt einfach die Reihenfolge nicht oder hast du eine komplett falsche Datei ausgewählt?

 

Bei dem Reihenfolge Problem gibt es Abhilfe: Du kannst bei den Events eine Verarbeitungsreihenfolge in Form von numerischen Werten angeben. Dein Wert muss einfach höher sein, als der vom vorhergehenden Plugin.

 

Meiner Ansicht nach bräuchtest du dafür nicht mal ein Plugin, das müsste im Theme auch gehen, wenn injectBeforePlugins auf false steht.

 

 

MFG

 

derwunner

1 „Gefällt mir“

Hallo,

es scheint ein Problem mit der Reihenfolge zu geben. Hast Du einen Tipp, wie ich die Verarbeitungsreihenfolge ändern kann?
injectBeforePlugins muss leider auf true stehen bleiben…

public static function getSubscribedEvents() {
  return [
    'EVENTNAME' => ['myFunction', 10]
  ];
}

 

1 „Gefällt mir“

Vielen Dank,

leider funktioniert auch das nicht richtig. Ich werde den Plugin-Hersteller nochmals befragen.

Du musst mit der Priorität spielen, solange bis es passt.

@derwunner schrieb:

Bei dem Reihenfolge Problem gibt es Abhilfe: Du kannst bei den Events eine Verarbeitungsreihenfolge in Form von numerischen Werten angeben. Dein Wert muss einfach höher sein, als der vom vorhergehenden Plugin.

Ich habe gerade eben die Reihenfolge von Listenern erfolgreich geändert. Anders als hier beschrieben war mir das jedoch nur möglich, wenn die Priorität kleiner war als alle anderen.

Wird keine Priorität eingetragen wird standardmäßig 0 angenommen, weshalb ich nur mit einer negativen Zahl erfolgreich war:

public static function getSubscribedEvents() {
  return [
    'EVENTNAME' => ['myFunction', -10]
  ];
}

Viele Grüße,
Morty