2011-10-05 8 views
21

In questo momento mi sto esplorando l'interno della sezione di amministrazione di Magento e mi sono imbattuto in questo pezzo di XML:Cosa fa l'elemento "aggiornamento" nel XML di layout Magento?

File: app/design/adminhtml/default/default/layout/catalog.xml, attorno alla riga 55

50   <block type="core/template" template="catalog/wysiwyg/js.phtml"/> 
51  </reference> 
52 </adminhtml_catalog_product_new> 
53  
54 <adminhtml_catalog_product_edit> 
55  <update handle="editor"/> 
56  <reference name="content"> 
57   <block type="adminhtml/catalog_product_edit" name="product_edit"></block> 
58  </reference> 

Cosa tag <update /> fare?

risposta

50

Il <update> preme in un'altra maniglia.

Si supponga di avere questo:

<layout> 
    <foo> 
     <reference name="header"> 
      <block type="cms/block" name="some_block" as="someBlock"> 
       <action method="setBlockId"><block_id>some_block</block_id></action> 
      </block> 
     </reference> 
     <reference name="left"> 
      <block type="cms/block" name="some_totally_different_block" as="someTotallyDifferentBlock"> 
       <action method="setBlockId"><block_id>some_totally_different_block</block_id></action> 
      </block> 
     </reference> 
    </foo> 
    <bar> 
     <update handle="foo" /> 
     <reference name="header"> 
      <block type="cms/block" name="some_other_block" as="someOtherBlock"> 
       <action method="setBlockId"><block_id>some_other_block</block_id></action> 
      </block> 
     </reference> 
    </bar> 
</layout> 

L'XML risultante per bar sarebbe:

<layout> 
    <bar> 
     <reference name="header"> 
      <!-- Start of part pulled in from foo --> 
      <block type="cms/block" name="some_block" as="someBlock"> 
       <action method="setBlockId"><block_id>some_block</block_id></action> 
      </block> 
      <!-- End of part pulled in from foo --> 
      <block type="cms/block" name="some_other_block" as="someOtherBlock"> 
       <action method="setBlockId"><block_id>some_other_block</block_id></action> 
      </block> 
     </reference> 
     <!-- Start of part pulled in from foo --> 
     <reference name="left"> 
      <block type="cms/block" name="some_totally_different_block" as="someTotallyDifferentBlock"> 
       <action method="setBlockId"><block_id>some_totally_different_block</block_id></action> 
      </block> 
     </reference> 
     <!-- End of part pulled in from foo --> 
    </bar> 
</layout> 

tl; dr: La maniglia update è fondamentalmente un "Unisci questo layout con il mio attuale disposizione".

+1

Come posso sostituire il layout ... –

7

Questo handle viene utilizzato per unire gli handle di layout esistenti al layout corrente. Nel tuo esempio <update handle="editor"/> aggiungerà al <adminhtml_catalog_product_edit> seguente contenuto:

<editor> 
      <reference name="head"> 
       <action method="setCanLoadExtJs"><flag>1</flag></action> 
       <action method="addJs"><script>mage/adminhtml/variables.js</script></action> 
       <action method="addJs"><script>mage/adminhtml/wysiwyg/widget.js</script></action> 
       <action method="addJs"><script>lib/flex.js</script></action> 
       <action method="addJs"><script>lib/FABridge.js</script></action> 
       <action method="addJs"><script>mage/adminhtml/flexuploader.js</script></action> 
       <action method="addJs"><script>mage/adminhtml/browser.js</script></action> 
       <action method="addJs"><script>prototype/window.js</script></action> 
       <action method="addItem"><type>js_css</type><name>prototype/windows/themes/default.css</name></action> 
       <action method="addItem"><type>js_css</type><name>prototype/windows/themes/magento.css</name></action> 
      </reference> 
</editor> 

("editore" manico è definito in app/design/adminhtml/default/default/layout/main.xml)

+2

Come sarà Magento sapere che maniglia è all'interno di main.xml? Cosa succede se un altro file xml personalizzato contiene l'handle ? Anche questo verrà unito? –

+0

Penso che Magento unirà queste due maniglie. –

+1

Hmmm significa che Magento cercherà tutti i file xml nella cartella di layout per gli handle ? Scusa ma non abbastanza capendo. –

Problemi correlati