Come aggiungere i file per il modulo personalizzato in configurazione di sistema? [duplicare]

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

  •  16-10-2019
  •  | 
  •  

Domanda

Ho il mio modulo in Sistema-> Configurazione e voglio aggiungere js e file css per esso. Ora è così:

<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>

Questo file modo aggiunto a tutte le pagine Admin. Cosa fare per aggiungere questo file solo per una pagina, in modo da scrittura non di default, ma mymodule_admin o si dovrebbe occupare del genere?

È stato utile?

Soluzione

Si potrebbe g_developer il adminhtml_system_config_edit manico di layout anziché default, ed i file solo sotto Sistema> Configurazione. L'XML sarebbe simile a questa:

<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>

Se avete bisogno solo questi nuovi file in una sezione certail, si dovrebbe aggiungere la tua maniglia disposizione, dal momento che Magento non offre questo fuori dalla scatola. Per essere onesti, penso che questo non è davvero valsa la pena, ma per rispondere alla tua domanda:

Aggiungi un osservatore evento

Per raggiungere questo obiettivo, ascoltare il controller_action_layout_load_before evento. Nel vostro 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>

L'evento è gettato nel Mage_Core_Controller_Varien_Action nel metodo loadLayoutUpdates().

Aggiungi il tuo manico layout personalizzato

Ora che avete definito il vostro osservatore evento, è possibile verificare se la pagina che si sta attualmente corrisponde alla configurazione del sistema del modulo. Nel vostro osservatore evento:

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;
}

Il manico layout personalizzato deve essere caricata ora. È possibile utilizzare questa nuova maniglia per la sua definizione di layout. Si prega di non che io non ho avuto tempo per testare questo, spero che funziona bene. Volevo solo per puntare a una possibile soluzione al vostro problema.

Altri suggerimenti

Cambia il nome manico layout. Invece di default utilizzare il gestore predefinito per la tua pagina. Per esempio, se la vostra pagina URL come questo 'modulo / adminhtml_entity / index' (o module/adminhtml_entity/ il layout può apparire così:

<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>

Se il tuo aspetto URL tipo admin/module_entity/index il layout dovrebbe essere simile a questo: (sostituire amministratore con 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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top