Domanda

Ho cercato di ottenere questo diritto per un po ', ma quando guardo il blocco adminhtml_head vedo che si estende fuori del blocco html_head. Ho esteso il blocco html_head modo che io possa aggiungere una voce di CDN. Funziona bene sul fronte quando ho regolare il codice XML di layout, ma quando ho regolare il xml layout per il back-end che salta di classe sopra estesa, in modo che il sovrascrittura non funziona. Fondamentalmente quello che ho fatto è prova facendo aggiunto un javascript per il adminhtml / page_head e che i lavori utilizzando il tipo di add_js normale. Ma quando vado a utilizzare il tipo cdn_js, poiché non è colpire il mio metodo, semplicemente salta esso.

C'è qualche ragione per cui l'amministratore non si sarebbe ripresa la mia scrittura sopra anche tu sia la fine di amministrazione per estendere al largo della Mage_Page_Block_Html_Head nucleo?

Nel mio config ho questo

<blocks>
<page>
<rewrite>
    <html_head>Wsu_Storeutilities_Block_Html_Head</html_head>
</rewrite>
</page>
</blocks>

che lavora per il fronte. Ho provato molte combinazioni diverse per ottenere l'adminhtml di raccogliere così senza fortuna.

È stato utile?

Soluzione

La testata predefinita nel backend è un'istanza di Mage_Adminhtml_Block_Page_Head (adminhtml / page_head). È necessario ignorare che anche e aggiungere il tuo metodo.
Anche se Mage_Adminhtml_Block_Page_Head estende Mage_Page_Block_Html_Head e hai Mage_Page_Block_Html_Head sovrascritto il blocco utilizzata nel backend estende ancora la classe originale Magento, ei tuoi metodi non è presente in essa.
[EDIT]
I suoi blocchi di riscrivere la sezione dovrebbe essere simile a questo:

<blocks>
    <page><!-- rewrite the frontend head block -->
        <rewrite>
            <html_head>Wsu_Storeutilities_Block_Html_Head</html_head>
        </rewrite>
    </page>
    <adminhtml><!-- rewrite admin head block -->
        <rewrite>
            <page_head>Wsu_Storeutilities_Block_Adminhtml_Page_Head</page_head>
        </rewrite>
    </adminhtml>
</blocks>

Quindi creare il file Wsu/Storeutilities/Block/Adminhtml/Page/Head.php con questo contenuto:

<?php
class Wsu_Storeutilities_Block_Adminhtml_Page_Head extends Mage_Adminhtml_Block_Page_Head{
    //your methods here
}

Altri suggerimenti

Sembra che tu non capisco come classe Magento riscrive lavoro - ma non preoccupatevi, è una cosa abbastanza facile da essere confuso circa.

sistema a oggetti di PHP non ha un rubino / python come l'anatra tipizzazione / sistema monetario-patch. Ciò significa Magento consente solo di riscrivere una classe direttamente un'istanza.

Cioè, quando un oggetto blocco in istanziato con un metodo factory (che sembra qualcosa di simile)

$layout->createBlock('page/html_head');

Magento esplorerà la configurazione e il look per un nodo <page/> con un nodo <rewrite/> bambino. Se ne trova uno, apparirà all'interno del nodo <rewrite/> per un nodo <html_head/>. Se trova una classe dentro quel nodo, esso un'istanza dell'oggetto utilizzando tale classe invece.

Quindi, nell'applicazione di console di amministrazione, il blocco di testa viene creata un'istanza con qualcosa di simile

$layout->createBlock('adminhtml/page_head')

Questo significa che la console di amministrazione ignorerà il vostro riscrittura di classe, dal momento che la configurazione riscrive solo il blocco page/html_head.

Per farla breve: Avete bisogno di una seconda classe di riscrittura per il blocco adminhtml/page_head.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top