In Template abfragen, ob ein Modul aktiv ist

Hallo,

hier eine Anleitung wie man IM Template abfragen kann, ob ein Modul aktiv ist oder nicht. Wenn jmd. eine kürzere Lösung weiß, her damit!

Das Modul in diesem Beispiel befindet sich im Ordner "/modules/my_module"
und benutzt die Klasse “modules/my_module/core/my_module_overwrittenclass”


[{assign var="is_my_module_active" value=false }]
[{assign var="config" value=$oViewConf->getConfig()}]
[{assign var="allModules" value=$config->getAllModules()}]

[{foreach from=$allModules item=modules}]
   [{foreach from=$modules item=module}]
      [{if $module == 'my_module/core/my_module_overwrittenclass' }]
         [{assign var="is_my_module_active" value=true }]
      [{/if}]
   [{/foreach}]
[{/foreach}]

[{assign var="disModules" value=$config->getConfigParam('aDisabledModules')}]
                  
[{foreach from=$disModules item=module}]
  [{if $module == 'my_module' }]
    [{assign var="is_my_module_active" value=false }]
  [{/if}]
[{/foreach}]

[{if $is_my_module_active}]
My Module is active!
[{/if}]

Wenn jemand das öfters braucht wäre eventuell ein smarty plugin oder Modul übersichtlicher - ich hab aber grad keine Lust das nieder zu schreiben :smiley: Aber danke für den Input!

Wozu benötigt man sowas?

Ich denke, das geht viel kürzer: Block mit Inhalt:


<...
My Module is active!
...>

und Folgendes in die metadata:

<?php

$sMetadataVersion = '1.1';

$aModule = array(...

    'blocks' => array(
		// !!! First add new block in 'template_with_my_module.tpl
        array('template' => '....../'template_with_my_module.tpl', 'block'=>'my_module','file'=>'my_module.tpl'),		
    )...
);

Die Idee ist es herauszufinden, ob ein bestimmtes Modul aktiv ist, OHNE dafür ein eigenes Modul zu schreiben, daß ja auch wieder aktiv sein muss bzw. wie in deiner Lösung einen Extrablock zu erstellen, der ja auch wieder in jedem Modul erstellt werden müsste.

Es sollte einfach so generisch wie möglich sein!

Aber ansonsten finde ich deine Lösung sehr schön und kurz.

Hi,
rubbercut´s Vorschlag benötigt kein extra Modul.
Du schreibst zusätzlich in die metadata.php deines Moduls rein, dass es in ein bestimmtes Template einen Block mit einen bestimmten Inhalt einfügen soll.
Das macht es nur dann, wenn es aktiv ist.

[QUOTE=nickname;120922]Hi,
rubbercut´s Vorschlag benötigt kein extra Modul.
[/QUOTE]

Weiß ich, aber soweit ich die Lösung verstanden habe, müsste jedes Modul, dessen Status ich abfragen möchte, so einen Extrablock haben.
Das möchte ich vermeiden.

Das geht dann noch kürzer indem man den Block inkl. “getAllModules” in ein eigenständiges Modul überträgt und die Funktion entsprechend nach den abzufragenden Modulen anpasst. So ist es autark und kommt ohne Templateänderungen aus.

[QUOTE=rubbercut;120959]Das geht dann noch kürzer indem man den Block inkl. “getAllModules” in ein eigenständiges Modul überträgt und die Funktion entsprechend nach den abzufragenden Modulen anpasst. So ist es autark und kommt ohne Templateänderungen aus.[/QUOTE]

jep! Kann man auch noch machen!