Wie füge ich Dateien für benutzerdefiniertes Modul unter Systemkonfiguration hinzu? [Duplikat

magento.stackexchange https://magento.stackexchange.com/questions/5048

  •  16-10-2019
  •  | 
  •  

Frage

Ich habe mein eigenes Modul in System-> Konfiguration und möchte JS- und CSS-Dateien dafür hinzufügen. Jetzt ist es so:

<layout version="0.1.0">
    <default>
        <reference name="head">
            <action method="addItem"><type>js_css</type><name>prototype/windows/themes/default.css</name></action>
            <action method="addCss"><name>mymodule.css</name></action>
        </reference>
    </default>
</layout>

Auf diese Weise fügten Dateien zu allen Administratorseiten hinzu. Was tun, um diese Dateien nur zu einer Seite hinzuzufügen, also schreiben Sie nicht Standard, sondern myModule_admin oder smth so?

War es hilfreich?

Lösung

Sie könnten den Layout -Griff einsetzen adminhtml_system_config_edit Anstatt von default, und Ihre Dateien nur unter System> Konfiguration. Der XML würde so aussehen:

<layout version="0.1.0">
    <adminhtml_system_config_edit>
        <reference name="head">
            <action method="addItem"><type>js_css</type><name>prototype/windows/themes/default.css</name></action>
            <action method="addCss"><name>mymodule.css</name></action>
        </reference>
    </adminhtml_system_config_edit>
</layout>

Wenn Sie diese neuen Dateien nur in einem Abschnitt "Certail" benötigen, sollten Sie Ihr eigenes Layout -Handle hinzufügen, da Magento dies nicht außerhalb der Box bietet. Um ehrlich zu sein, denke ich, dass dies die Mühe nicht wirklich wert ist, sondern Ihre Frage zu beantworten:

Fügen Sie einen Ereignisbeobachter hinzu

Um dies zu erreichen, hören Sie sich die Veranstaltung an controller_action_layout_load_before. In deiner config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <!-- ... -->
    <adminhtml>
        <events>
            <controller_action_layout_load_before>
                <observers>
                    <my_module_observer>
                        <class>my_module/observer</class>
                        <method>addCustomLayoutHandle</method>
                    </my_module_observer>
                </observers>
            </controller_action_layout_load_before>
        </events>
    </adminhtml>
    <!-- ... -->
</config>

Die Veranstaltung wird hereingeworfen Mage_Core_Controller_Varien_Action in der Methode loadLayoutUpdates().

Fügen Sie Ihr benutzerdefiniertes Layout -Griff hinzu

Nachdem Sie Ihren Ereignisbeobachter definiert haben, können Sie überprüfen, ob die Seite, auf der Sie sich derzeit befinden, der Systemkonfiguration Ihres Moduls entspricht. In Ihrem Veranstaltungsbeobachter:

public function addCustomLayoutHandle(Varien_Event_Observer $observer)
{
    $controllerAction = $observer->getEvent()->getAction();
    $layout = $observer->getEvent()->getLayout();
    if ($controllerAction && $layout && $controllerAction instanceof Mage_Adminhtml_System_ConfigController) { // Can be checked in other ways of course
        if ($controllerAction->getRequest()->getParam('section') == 'my_module_section') {
            $layout->getUpdate()->addHandle('my_custom_handle');
        }
    }
    return $this;
}

Das benutzerdefinierte Layout -Griff sollte jetzt geladen werden. Sie können diesen neuen Griff für Ihre Layout -Definition verwenden. Bitte nicht, dass ich keine Zeit hatte, dies zu testen, hoffe, es funktioniert gut. Ich wollte Sie nur auf eine mögliche Lösung für Ihr Problem verweisen.

Andere Tipps

Ändern Sie den Namen des Layout -Handels. Anstatt von default Verwenden Sie den Standard -Handler für Ihre Seite. Zum Beispiel, wenn Ihre Seiten -URL so aussieht wie dieses "Modul/adminhtml_entity/index" (oder module/adminhtml_entity/ Ihr Layout kann so aussehen:

<layout>
    <module_adminhtml_entity_index>
        <reference name="head">
            <action method="addItem"><type>js_css</type><name>prototype/windows/themes/default.css</name></action>
            <action method="addCss"><name>mymodule.css</name></action>
        </reference>
    </module_adminhtml_entity_index>
</layout>

Wenn Ihre URL aussieht wie admin/module_entity/index Ihr Layout sollte wie folgt aussehen: (Ersetzen Sie den Administrator durch adminHtml)

<layout>
    <adminhtml_module_entity_index>
        <reference name="head">
            <action method="addItem"><type>js_css</type><name>prototype/windows/themes/default.css</name></action>
            <action method="addCss"><name>mymodule.css</name></action>
        </reference>
    </adminhtml_module_entity_index>
</layout>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top