Plugin Templates mit Plugin erweitern

Hallo

ich würde gerne die Template Dateien eines Plugins (A) mit den Template Dateien eines Plugins (B) erweitern. Dazu habe ich zunächst folgende beiden Plugins A und B und ihre Template Datei-Struktur wie folgt:

prefixPluginA
|__Resources > views > frontend > index > index.tpl
|__Resources > views > frontend > prefix_plugin_a_ordner > plugin_a_template.tpl

 

prefixPluginB
|__Resources > views > frontend > index > index.tpl
|__Resources > views > frontend > prefix_plugin_b_ordner > plugin_b_template.tpl

 

Plugin A und Plugin B erweitern beide das Frontend. Dabei werden Inhalte in einen Block der index.tpl aus den zusätzlichen Ordnern inkludiert:

 

PluginA: frontend > index > index.tpl

{extends file="parent:frontend/index/index.tpl"}
{block name='frontend_index_before_page'}
    {$smarty.block.parent}
    {include file="frontend/prefix_plugin_a_ordner/plugin_a_template.tpl"}
{/block}

PluginA:  frontend > prefix_plugin_a_ordner > plugin_a_template.tpl

{block name='pluginABlock'}
    INHALT INHALT INHALT
{/block}

 

PluginB: frontend > index > index.tpl

{extends file="parent:frontend/index/index.tpl"}
{block name='frontend_index_before_page'}
    {$smarty.block.parent}
    {include file="frontend/prefix_plugin_b_ordner/plugin_b_template.tpl"}
{/block}

PluginB:  frontend > prefix_plugin_b_ordner > plugin_b_template.tpl

{block name='pluginBBlock'}
    INHALT INHALT INHALT
{/block}

 

Nun soll Plugin A durch Plugin B aber noch erweitert werden, dazu möchte ich die Ordnerstruktur aus dem Plugin A übernehmen und habe mir diese Ordner ebenfalls in Plugin B angelegt:

 

prefixPluginB
|__Resources > views > frontend > index > index.tpl
|__Resources > views > frontend > prefix_plugin_b_ordner > plugin_b_template.tpl
|__Resources > views > frontend > prefix_plugin_a_ordner > plugin_a_template.tpl

 

 

Möglichkeit 1 funktioniert leider nicht:

PluginB: frontend > prefix_plugin_a_ordner > plugin_a_template.tpl

{extends file="parent:frontend/prefix_plugin_a_ordner/plugin_a_template.tpl"}
{block name='pluginABlock'}
    {$smarty.block.parent}
    ERWEITERTER INHALT
{/block}

 

Notlösung ist hier, dass ich die Blöcke in der index.tpl des PluginB erweitere.

PluginB: frontend > index > index.tpl

{extends file="parent:frontend/index/index.tpl"}
{block name='frontend_index_before_page'}
    {$smarty.block.parent}
    {include file="frontend/prefix_plugin_b_ordner/plugin_b_template.tpl"}
{/block}

{block name='pluginABlock'}
    {$smarty.block.parent}
    ERWEITERTER INHALT
{/block}

 

Wie geht man sowas an?

 

 

 

Ich habe die Lösung gefunden: Man muss dabei darauf achten, dass bei der Template Registrierung in einem Subscriber die Templates von PluginB nach den Templates des PluginA registriert werden - ist ja auch logisch. 

 

Zusatzfrage: Kann es hierbei in irgendeiner Konstellation zu einer Smarty-Exeption kommen? 

Beispiel:

  1. PluginA ist nicht installiert - extends-Befehl versucht etwas zu erweitern, was es nicht gibt - keinen Fehler bemerkt - es dürften ja dann die Dateien im PluginB gar nicht aufgerufen werden, da sie ja niemals inkludiert wurden. korrekt?
  2. illegal recursive call - würde erscheinen, wenn die die PluginB: frontend > prefix_plugin_a_ordner > plugin_a_template.tpl in der index.tpl includen würde - das habe ich ja aber nicht vor. Die Dateien werden ja erst geladen, wenn PluginA installiert ist und darin die Eltern-Dateien inlkudiert wurden. Aber so ein Fehler dürfte ja auch nicht auftreten in irgendeiner Konstellation?