ããã«ã¡ã¯ã
ãã©ãããã©ãŒã ãéåžžã«äººæ°ããããåæã«åçŽã§ã¯ãªããšããäºå®ã«ãããããããHabrãMagentoã«é¢ããèšäºã«çãããããŠããªãããšã¯æ³šç®ã«å€ããŸãã ãã®èšäºã§ã¯ãããŠã³ããŒãå¯èœãªå®éã®æ¡åŒµæ©èœãäœæããæ¹æ³ã瀺ããŸãã ããã¯ããã«ã¡ã¯ã®äžçã§ã¯ãªããCommercebugã®ç¡æã®ä»£æ¿ææ®µãã³ãã¥ããã£ã«æäŸããããšãã顿ã§ãïŒMagentoã§åããŠãããªããããããèããããšãããã§ãããïŒã
ããã§ãããã«äœ¿ããæ¡åŒµæ©èœã¯ã©ãããã¹ãã§ããããïŒ ããã¯ãçŸåšäœ¿çšãããŠãããããã¯ããã³ãã¬ãŒãããã³ãã«ãããã³ãã®ä»ã®æçšãªæ
å ±ã«é¢ããããŒã¿ãå«ãããŒãžäžã®ã»ã¯ã·ã§ã³ã§ããå¿
èŠããããŸãã æãããã¿åŒã®ãã³ã³ãœãŒã«ãã®åœ¢ã§ãããè¡ãã®ãæã䟿å©ã§ããããã«æããŸãã-Half-Lifeã®ãããªå€ãã®ã²ãŒã ã§èŠæ
£ããŠãããã®ã§ãã åœç¶ãã³ãã³ãã©ã€ã³ã¯å¿
èŠãªããããã³ãã³ãã©ã€ã³ã¯ãããŸããã
ãŸãæåã«è¡ãå¿
èŠãããã®ã¯ããã¡ã€ã«æ§é ã®äœæã§ãã ç§ã¯å®éã®æ¡åŒµæ©èœã«ã€ããŠèª¬æããŠããããããã®èšäºã§ã¯åå空éãšã¯ã©ã¹ã®å®éã®ååã䜿çšããèš±å¯ãæ±ããŠããŸãã
åå空éïŒåå空éïŒãå®çŸ©ããŸããã-ããã¯ã¯ã©ã¹ã®ååã®æåã®éšåã§ãããæ¡åŒµæ©èœã®éçºè
ã«ãã£ãŠèå¥ãããŸãã ããšãã°ãå
éšã§éçºããããã¹ãŠã®Magentoå
éšã¯ã©ã¹ã«ã¯ãåå空éãMageãããããŸãã ããªã³ã«ãŒãã«ããŸãã app / code / communityã«ãã®ååã®ãã£ã¬ã¯ããªãäœæããŸãã
ãã©ãããã©ãŒã ã«3ã€ã®æšæºã³ãŒãããŒã«ïŒã³ã¢ããŒã«ãã³ãã¥ããã£ãããŒã«ã«ïŒãããããšãæãåºãããŠãã ããã 1ã€ç®ã¯ç€Ÿå
ã§éçºãããã³ãŒãã®ã¿ã2ã€ç®ã¯ã³ãã¥ããã£ãéçºããŠãããã®ïŒææãšç¡æã®äž¡æ¹ã®æ¡åŒµæ©èœïŒã3ã€ç®ã¯å
±æããªããã®ç¹å®ã®ãµã€ãã®å€æŽãå«ã¿ãŸãã
次ã«ãã¢ãžã¥ãŒã«ã®ååïŒInsiderïŒã䜿çšããŠå
éšã«ãã£ã¬ã¯ããªãäœæãããã®äžã«æšæºã®ãã£ã¬ã¯ããªæ§é ãäœæããŸãã
Insider
|-- Block
|-- controllers
|-- etc
|-- â config.xml
|-- Helper
|-- â Data.php
|-- Model
Data.phpãšconfig.xmlã¯å¿
é ã®æ¡åŒµãã¡ã€ã«ã§ãããããããªããã°ãã³ãŒãã¯èµ·åããŸããã
config.xmlã«æ¬¡ã®ãã®ã远å ããŸãã
<? xml version ="1.0" ? > <!-- , - XML! -->
< config > <!-- root node -->
< modules >
< Linker_Insider > <!-- -->
< version > 0.1.0.0 </ version >
</ Linker_Insider >
</ modules >
</ config >
ããã§ãç§ã¯ã·ã¹ãã ã«ãç§ããã®ãããªã¢ãžã¥ãŒã«ã§ããããã®ãããªããŒãžã§ã³ãããããšãéç¥ããŸããã ãããŸã§ã®ãšãããéèŠãªããšã¯äœããããŸããã Data.phpã®å
å®¹ã¯æ¬¡ã®ãšããã§ãã
Copy Source | Copy HTML
- <ïŒphp
- ã¯ã©ã¹ Linker_Insider_Helper_Data 㯠Mage_Core_Helper_Dataãæ¡åŒµããŸã{}
ããã¯ã¹ã¿ãã§ãã ãã«ããŒã¯äœ¿çšããŸãããããã®ãã¡ã€ã«ã¯ã·ã¹ãã ã«å¿
èŠã§ãã
ã¯ã©ã¹ã®åœåèŠåã«ã€ããŠå°ã説æããŸããåºæ¬çã«ã¯Zendã®åœåèŠåãšäžèŽããŸããã€ãŸããã¯ã©ã¹åãèŠããšãæ£ç¢ºã«ã©ãã«ããããããããŸãã å®éãã_ããã/ãã«çœ®ãæãããšãååã¯ãã¡ã€ã«ã·ã¹ãã å
ã®å Žæã«å¯Ÿå¿ããŸãã
次ã«ãäžè¬ãªã¹ãã§ã¢ãžã¥ãŒã«ãæå¹ã«ããŸãã ãããè¡ãã«ã¯ãetc / modules / Mage_All.xmlãéããæåŸã®ã¢ãžã¥ãŒã«ã®èª¬æãš</ config>ã®éã«æ¬¡ã®è¡ã远å ããŸãã
< Linker_Insider >
< active > true </ active >
< codePool > community </ codePool >
</ Linker_Insider >
ãããã£ãŠãã³ãã¥ããã£ã³ãŒãã®ããŒã«ïŒapp / code / communityïŒã«ããLinker_Insiderãšããã¢ãžã¥ãŒã«ãæå¹ã«ããïŒ<active> true </ active>ïŒããšãå ±åããŸããã
ãªã³ãçŽ æŽãããïŒ ãããããµã€ãã§ããã芳å¯ããããšã¯ãŸã ã§ããŸããããªããªããããã¯ãŸã äœãããªãããã§ãã 圌ãäœããŸãããã
ãããè¡ãã«ã¯ããã³ãã¬ãŒããã¡ã€ã«ãäœæããŸãã ããã³ããšã³ãã®ãã³ãã¬ãŒãã¯ãã¢ããª/ãã¶ã€ã³/ããã³ããšã³ã/ããŒã¹/ããã©ã«ã/ãã³ãã¬ãŒãã«ä¿åãããŸãã ããã§ãã¢ãžã¥ãŒã«ïŒã€ã³ãµã€ããŒïŒã®ååã§ãã£ã¬ã¯ããªãäœæããŸãããã®äžã«ã¯ããã¡ã€ã«discover.phtmlããããŸãã ããšãã°ããhelloããšèšè¿°ããŸãïŒããã§ã¯ãã¢ãžã¥ãŒã«ãæ©èœãããã©ããã確èªããã ãã§ãïŒã 次ã«ãã·ã¹ãã ã«æ¿å
¥å
ãæç€ºããå¿
èŠããããŸã-ããã¯ããŒã¯ã¢ããã«é¢ãããã®ã§ãã ã¬ã€ã¢ãŠããã³ãã¬ãŒãã¯XMLãã¡ã€ã«ã§ãããapp / design / frontend / base / default / layoutã«ãããŸãã æ¬¡ã®å
容ã§insider.xmlãšãããã¡ã€ã«ãäœæããŸãã
<? xml version ="1.0" ? >
< layout >
< default > <!-- -->
< block type ="core/template" name ="insider" template ="insider/disclose.phtml" />
</ default >
</ layout >
屿§ãã¿ã€ããã¯ããã³ãã¬ãŒãããã³ãã¬ãŒããã®ã¬ã³ããªã³ã°ãå¶åŸ¡ãããããã¯ã瀺ããŸãã ãã®å Žåãã¯ã©ã¹åãMage_Core_Block_Templateã®ãããã¯ã«ãªããŸãã type = "modulename / blockname"ã¯ãNamespace_modulename_Block_blocknameã衚ããŸãã åå空éã¯ãã§ã«ã·ã¹ãã ã«ç»é²ãããŠãããmodulenameã§å§ãŸããããã¯ãæ¢ãå Žæãç¥ã£ãŠãããšæ³å®ãããŠããŸãã ãã¡ãããMageã¯ç»é²ãããŠãããç¬èªã®ãããã¯ã䜿çšããå¿
èŠãããå Žåã¯ãæ§æãã¡ã€ã«ã«äœãã远å ããå¿
èŠããããŸãããããã«ã€ããŠã¯åŸã§è©³ãã説æããŸãã
屿§ 'name'ã¯ãä»ã®ãããã¯ã<reference>ã䜿çšããŠããã«åºå·ã§ããããã«ããããã«å¿
èŠã§ã-ãããå°ãæç¢ºã«ãªããŸãã
insider.xmlã®ã¿ãããã¯ã¢ããããããšã¯ã§ããŸãããã¢ãžã¥ãŒã«ãããŒã¯ã¢ããã倿Žããããšãæç€ºçã«ç€ºãå¿
èŠããããŸãããã®ããã«ãconfig.xmlã«å¥ã®ããŒããäœæããŸãã
< frontend > <!-- , -->
< layout > <!-- - -->
< updates > <!-- , - -->
< insider > <!-- -->
< file > insider.xml </ file > <!-- , -->
</ insider >
</ updates >
</ layout >
</ frontend >
次ã«ããµã€ãã«æ»ã£ãŠF5ãæŒããŸãããhelloãã¯ãããã³ããšã³ãããŒãžã®ã©ããã«è¡šç€ºãããŸãã 衚瀺ãããŸããã§ãããïŒ ãã£ãã·ã¥ã䜿çšããŠããŸãããïŒ ç®¡çããã«ã§ç¡å¹ã«ã§ããããšãæãåºãããŠãã ããïŒã·ã¹ãã ->ãã£ãã·ã¥ç®¡çã
ç§ã¯ããªãã®ããšã¯ç¥ããŸããããç§ã«ãšã£ãŠã¯ãç§ãã¡ã®èšé²ãäžçªäžã«ããã£ãŠããã®ã¯å¥œãã§ã¯ãããŸããã 圌女ãé«ãæããŸããããïŒ ãããè¡ãã«ã¯ãã¬ã€ã¢ãŠãäœæã¡ã«ããºã ã«ã€ããŠå°ã話ãå¿
èŠããããŸã.MagentoããŒãžã衚瀺ããåã«ãã¬ã€ã¢ãŠããã©ã«ããŒã®ãã¹ãŠã®.xmlãã¡ã€ã«ïŒåœç¶ãçŸåšã®ããŒãžã®è¡šç€ºã«çŽæ¥åœ±é¿ãããã¡ã€ã«ã®ã¿ïŒãè§£æãããããã®1ã€ãåéããŸãããå€§èŠæš¡ã§ãã 屿§ãbeforeãããã³ãafterãã䜿çšããŠãããŒãµãŒã«ãããããã®ãããã¯ãæ¿å
¥ããåãŸãã¯åŸã瀺ãããšãã§ããŸãã <reference>ããŒãå
ã«ãããã¯ãé
眮ãããšãç¹å®ã®ãããã¯ã«ãããã¯ãã§ããŸã-å
éšã«èªåãæ¿å
¥ããŸãã ã»ãšãã©ãã¹ãŠã®ãããã¯ã«ã¯å±æ§ 'name'ããããŸã-ããã¯äžè¬çãªããŒã¯ã¢ããã§ãããå®çŸ©ããæ¹æ³ã§ããããç§»åããŸãã¯ãäžæ©ã§éåºããããªã¯ãšã¹ãã§ãããæå¹ã«ããããšãã§ããŸãã
ã©ã®å Žæã®ã©ã®ãããã¯ãããèªäœãå®çŸ©ããããç¥ãã«ã¯ãä»ã®ã¢ãžã¥ãŒã«ã®ããŒã¯ã¢ãããã¡ã€ã«ã調ã¹ãå¿
èŠããããŸãã ããšãã°ãpage.xmlãèŠããšãã©ãã«ãPage Topãã®ãafter_body_startããšããååã®ãããã¯ããããŸãã ãããããªããå¿
èŠãªãã®ã®ããã§ãïŒ ããããç§ãã¡ã¯åœŒã«ããã¿ã€ããŠããŸãã ãããè¡ãã«ã¯ããããã¯ã®èª¬æã<reference>ããŒãå
ã®insider.xmlãã¡ã€ã«ã«é
眮ããŸãã
< reference name ="after_body_start" > <!-- after_body_start, ! -->
< block type ="core/template" name ="insider" template ="insider/disclose.phtml" />
</ reference >
ãŸããããã¯è¯ãã§ãã ããããç§ãã¡ã®ããããŒããç§ãåºæ¿ããã®ããããŸããã ããçš®ã®å§åçãª<div>ããã³ãã¬ãŒãã«è¿œå ããŸããããã¯ã©ã¹ããã³ã°ã¢ãããã.cssã§ã¹ã¿ã€ã«ãèšè¿°ããŠããã.jsã§ããã«ãã€ããã¯ã¹ã远å ããŸãã ã³ãŒãã¯ããªãã®å¥œã¿ã«ä»»ããŠãã©ã®ããã«æ©èœããããã ãã説æããŸãã ãã©ã«ããŒskin / frontend / base / default / css / insider / insider.cssã«ãã¡ã€ã«ãäœæããdeclare.phtmlã®è¡šç€ºã¹ã¿ã€ã«ã«åœ±é¿ããã³ãŒããèšè¿°ããŸãã ãã®ãã¡ã€ã«ãããŒãžã«è¿œå ããã«ã¯ãããŒã¯ã¢ãããã¡ã€ã«ïŒinsider.xmlïŒãç·šéããæ¬¡ã<default>ããŒãã«è¿œå ããå¿
èŠããããŸãã
< reference name ="head" > <!-- HTML <head> -->
< action method ="addCss" >< stylesheet > css/insider/insider.css </ stylesheet ></ action >
</ reference >
ãã®ã¢ã¯ã·ã§ã³ã¯äœã§ããïŒ <action>ããŒãã䜿çšãããšããããã¯ã¡ãœãããåŒã³åºããŠãããŒã¯ã¢ãããã¡ã€ã«ããçŽæ¥ãã©ã¡ãŒã¿ãŒãæž¡ãããšãã§ããŸãã ããã¯éåžžã«åŒ·åãªããšã§ãã page.xmlã«æ»ããšãããããpage / html_headãããheadããšããååã§çœ²åãããŠããããšãããããŸããããã¯ãMage_Core_Page_Block_Html_Headãšããã¯ã©ã¹ã§ãã ãã®å®è£
ãèŠãã°ãaddCssïŒïŒã¡ãœãããç°¡åã«èŠã€ããããšãã§ããŸãã ä»ãããªãã¯äœãéçã®ä»æã-<ã¢ã¯ã·ã§ã³>ãçè§£ããŠããŸããïŒ
JavaScriptããã£ãŠã¿ãŸãããã js / insider / insider.jsãã¡ã€ã«ãäœæãã奜ã¿ã®ã³ãŒãã§å³ä»ãããŸãã CSSãšã»ãŒåãæ¹æ³ã§è¿œå ããå¿
èŠããããŸããããããããåç
§ããåã<reference>ããŒãã«æ¬¡ã®ãšã³ããªãäœæããŸãã
< action method ="addJs" >< script > insider/insider.js </ script ></ action >
ããã§èª¬æããããšã¯äœããªããšæããŸã-顿šã«ããããã¹ãŠãæç¢ºã§ãªããã°ãªããŸããã
ãã¡ãããããã¯ãã¹ãŠè¯ãããšã§ãããç§ãã¡ã®æ¡åŒµã¯ãŸã 圹ã«ç«ããªããã®ã§ã¯ãããŸããã ãããä¿®æ£ããæãæ¥ãŸããïŒ ãã³ãã¬ãŒãã®åäœã«åœ±é¿ãäžããæ
å ±ããã³ãã¬ãŒãã«éä¿¡ããã«ã¯ãç¬èªã®ãããã¯ãå¿
èŠã§ãã ãã¡ã€ã«Linker / Insider / Block / Disclose.phpãäœæããŸãã æ¬¡ã®å
容ãå
¥åããŸãã
Copy Source | Copy HTML<br/> <?php <br/> class Linker_Insider_Block_Disclose extends Mage_Core_Block_Template<br/>{<br/> // Magento __construct() ( "_") <br/> function _construct()<br/> {<br/> // ( Zend Framework) <br/> $request = $this ->getRequest();<br/> // , <br/> $this ->module = $request ->getModuleName();<br/> $this ->controller = $request ->getControllerName();<br/> $this ->action = $request ->getActionName();<br/> }<br/>}<br/> <br/>
ãã®æ
å ±ããã³ãã¬ãŒãã«è»¢éã§ããããã«ããã«ã¯ãinsider.xmlãã¡ã€ã«ã®ãããã¯ã¿ã€ãã倿Žããå¿
èŠããããŸãã
< block type ="insider/disclose" name ="insider" template ="insider/disclose.phtml" />
ãã ããæ³šæç¹ã1ã€ãããŸããæ©èœããŸããã ç§ãã¡ã¯ç¬èªã®åå空éãæã£ãŠããããšãæãåºããŠãã ããã ãããè¡ãå¿
èŠããããŸããããããªããšãã·ã¹ãã ã¯ãããã¯ã¯ã©ã¹ãèŠã€ããããšãã§ããŸããã config.xmlã«å€æŽãå ããŸãã
< global > <!-- , -->
< blocks > <!-- -->
< insider > <!-- , Mage::getModel('insider/') -->
< class > Linker_Insider_Block </ class > <!-- Linker_Insider_Block_ -->
</ insider >
</ blocks >
</ global >
å®éããã³ãã¬ãŒãã¯ããããã¯èªäœã®ã¡ãœããã䜿çšããŠã¬ã³ããªã³ã°ãããŸããã€ãŸãããã®ãããã¯èªäœã®ãã¹ãŠã®ãã£ãŒã«ããšã¡ãœããïŒä¿è·ãããŠããŠããã©ã€ããŒãã§ãïŒã«ã¢ã¯ã»ã¹ã§ããŸãã ãã®æ¹æ³ã§å€æ°ã®å
容ã衚瀺ã§ããŸãïŒdisclosure.phtmlã«æžã蟌ã¿ãŸãïŒã
Copy Source | Copy HTML<br/> <br/>Module: <?php echo $this ->module; ?> <br/>Controller: <?php echo $this ->controller; ?> <br/>Action : <?php echo $this ->action; ?> <br/> <br/>
ããã§ãçªç¶ãããã¯ãçŸãã衚瀺ããããŒã¿ãå
¥åããããšèããŠãããšããŸãã åºæ¬çã«ãããã«ã¯name = valueã¹ããŒã ãããã®ã§ããããè¡ãæãç°¡åãªæ¹æ³ã¯ãã©ãŒã ã䜿çšããããšã§ãã ãã©ãŒã çšã®å¥ã®ãã¡ã€ã«ããããŸãããªã³ã«ãŒ/ã€ã³ãµã€ããŒ/ãããã¯/é瀺/ãã©ãŒã /Controller.phpã§ãã ååã¯ããªããæ··ä¹±ãããªãã§ãã ãã-çŸåšã®ã³ã³ãããŒã©/ã¢ãžã¥ãŒã«/ã¢ã¯ã·ã§ã³ã«é¢ããæ
å ±ãå«ãåãªããã©ãŒã ã«ãªããŸãããã¡ã€ã«ã®å
å®¹ã¯æ¬¡ã®ãšããã§ãã
Copy Source | Copy HTML<br/> <br/> <?php <br/> class Linker_Insider_Block_Disclose_Form_Controller extends Varien_Data_Form<br/>{<br/> public function __construct()<br/> {<br/> // HTML id <br/> parent::__construct( array ( 'id' => 'insider-form-controller' ));<br/> <br/> // HTML id , ( Varien_Data_Form_Element_*), <br/> // (ZF- ) <br/> $this ->addField( 'module' , 'text' , array ( 'label' => 'Module' ));<br/> $this ->addField( 'controller' , 'text' , array ( 'label' => 'Controller' ));<br/> $this ->addField( 'action' , 'text' , array ( 'label' => 'Action' ));<br/> }<br/>}<br/> <br/>
å®äºããŸãããä»åºŠã¯ããŒã¿ãå
¥åããŸãã MVCã®æŠå¿µã«ããã°ãããŒã¿ã¯ã¢ãã«ããååŸããå¿
èŠãããããããããã¯ã®ã³ã³ãã³ããã¢ãã«ã«ç§»åããå¿
èŠããããŸãã ãã¡ã€ã«Linker / Insider / Model / Insider.phpãäœæããŸãã
Copy Source | Copy HTML<br/> <br/> <?php <br/> class Linker_Insider_Model_Insider extends Mage_Core_Model_Abstract<br/>{<br/> public function _construct()<br/> {<br/> // , getRequest(), : <br/> $request = Mage::app()->getRequest();<br/> $module = $request ->getModuleName();<br/> $controller = $request ->getControllerName();<br/> $action = $request ->getActionName();<br/> <br/> // setData() protected $_data <br/> // , id , <br/> // , <br/> $this ->setData( 'controller' , array (<br/> 'module' => $module ,<br/> 'controller' => $controller ,<br/> 'action' => $action ,<br/> ));<br/> }<br/>} <br/>
ããã§ãã¢ãã«ã®ããŒã¿ããã©ãŒã ã«å
¥åã§ããŸãã
Copy Source | Copy HTML<br/>...<br/> $this ->addField( 'action' , 'text' , array ( 'label' => 'Action' ));<br/> $model = Mage::getSingleton( 'insider/insider' );<br/> $this ->addValues( $model ->getData( 'controller' ));<br/> <br/>
ãããããããåæ§ã«æ©èœããŸããã ã·ã¹ãã ã¯ããã€ã³ãµã€ããŒãã§å§ãŸããããã¯ãæ¢ãå Žæãç¥ã£ãŠããŸããããã®ãããªã¢ãã«ãæ¢ãå Žæãç¥ããŸããã 圌女ã«config.xmlãã¡ã€ã«ã®<global>ããŒãã§èª¬æããŸãã
<!-- -->
< models >
< insider >
< class > Linker_Insider_Model </ class >
</ insider >
</ models >
ããã§ã¢ãã«ã«ç®ãåããããšãã§ããŸãããä»åºŠã¯ãã©ãŒã ãç®ã«èŠããããã«ããå¿
èŠããããŸãã ãããè¡ãã«ã¯ã次ã®ããã«Disclose.phpã®å
容ã倿ŽããŸãã
Copy Source | Copy HTML<br/> <br/> <?php <br/> class Linker_Insider_Block_Disclose extends Mage_Core_Block_Template<br/>{<br/> public $forms = array ();<br/> <br/> protected function _construct()<br/> {<br/> $this ->forms = array (<br/> 'controller' => new Linker_Insider_Block_Disclose_Form_Controller(),<br/> );<br/> }<br/>}<br/> <br/>
ãããŠããã³ãã¬ãŒãã§ãå
ã»ã©è¿œå ãã3è¡ãåé€ããããã·ã³ãã«ãªãã®ã«çœ®ãæããŸãã
Copy Source | Copy HTML<br/> <br/> <?php echo $this ->forms[ 'controller' ]->toHtml(); ?> <br/>
OKãå®äºã§ãã ãã©ãŒã ããã³ã³ãœãŒã«ãã®å€èгã«ããããã«ãç¬èªã®ã¬ã³ãã©ãŒãäœæã§ããŸãã ããã¯ããã»ã©é£ããäœæ¥ã§ã¯ãªãããœãŒã¹ã³ãŒããããã¹ãŠãæç¢ºã«ãªã£ãŠããã¯ããªã®ã§ãããã§ã¯ãã®æé ãã¹ãããããŸãã
ããã§ã¯ããã£ãšæ·±å»ãªããšãããŸããããçŸåšã®ããŒãžã®è¡šç€ºã«é¢ä¿ãããã¹ãŠã®ãããã¯ã®ãªã¹ããååŸãããšäŸ¿å©ã§ãã æ¬¡ã®ããã«ã¢ãã«ãããããè¡ãããšãã§ããŸãã
Copy Source | Copy HTML<br/> // , <br/> $layout = Mage::app()->getLayout();<br/> foreach ( $layout ->getAllBlocks() as $name => $block ) {<br/> $class = get_class( $block );<br/> // , , Mage_Core_Block_Abstract, <br/> if (method_exists( $block , 'getTemplate' )) {<br/> /* @var $block Mage_Core_Block_Template */ <br/> $template = $block ->getTemplate();<br/> } else {<br/> $template = false ;<br/> }<br/> <br/> $blocks [] = array (<br/> // eg Mage_Catalog_Product_List <br/> 'class' => $class ,<br/> // eg catalog/product_list.phtml <br/> 'template' => $template ,<br/> // eg "head" <br/> 'name' => $name ,<br/> // eg /home/user/magento/app/code/core/Mage/Catalog/Product/List.php <br/> 'blockFile' => mageFindClassFile( $class ),<br/> // eg /home/user/magento/app/design/frontend/base/default/template/catalog/product_list.phtml <br/> 'templateFile' => $template ? $block ->getTemplateFile() : '' ,<br/> );<br/>}<br/> <br/>
ãã©ãŒã ãäœæãããããã®ããŒã¿ãå
¥åããŠããã³ãã¬ãŒãã§ã¬ã³ããªã³ã°ããããšãä¿¡é ŒããŠããŸãã ãŸããã€ãŸãããã¹ãŠãœãŒã¹ã³ãŒãã§å©çšå¯èœã§ãã ãªããã®äœåã¯ããã«ããã®ã§ããïŒ ããªãããã®ã¢ãããŒãã®å€±æãèŠãããã«ã ãããã¯ã®ãªã¹ãã§ã¯ãèªåèªèº«ãååŸããŸãïŒOKãæ²ãã¿ã¯ããã»ã©å€§ãããããŸããïŒãããã¹ãŠãååŸããããã§ããããŸããïŒã¹ããã-ã¹ããã-ã¹ãããããªãïŒïŒã å°ãªããšãããããã¯ã¯<body>ã¿ã°ã®çŽåŸã®æåã®ãããã¯ã®1ã€ã«ã¬ã³ããªã³ã°ãããããã§ãã ãã®çµæãã¢ãã«ã¯æ¢ã«ååšãããããã¯ã«é¢ããæ
å ±ã®ã¿ãåŒãåºãããšãã§ããããã¯ãã¹ãŠç¡æã§ãã ãã®é害ãå
æããã«ã¯ïŒ æåã«é ã«æµ®ãã¶ã®ã¯ãã©ã®ãããã¯ãæåŸã«ã¬ã³ããªã³ã°ããããã確èªãããã®åŸã«ãåŸããç¶ããããšã§ãã ããããèããŠã¿ããšãå¥ã®ãããã¯ã衚瀺ãããå¯èœæ§ãããããã«æ©èœããŸãã-ããã¯åŸã§ã¬ã³ããªã³ã°ããããããåŸãã䜿çšããŠç§ãã¡ã«ããã¿ã€ãã§ããã-ãããŠç§ãã¡ã¯ãããèŠãŸããã ããããããã§ã¯å¥ã®ã¬ãã«ãå¿
èŠã§ãã èŠæ±ãåŠçããéçšã§ãMagentoã¯ããªãå€ãã®ã€ãã³ããçæããŸãããããã®ã€ãã³ãã«ã€ããŠã¯ãããããã¯ãã®ããã«ããã£ãããããããšãã§ããŸãã ããŒãžããã©ãŠã¶ã«éä¿¡ãããåã«æåéãå ±åãããã€ãã³ãã¯ã©ãã§ããïŒ ããã¯çŽ æŽãããã§ããïŒ ãã¹ãŠã®ãããã¯ãã¬ã³ããªã³ã°ãããå¯èœãªéããã¹ãŠãå®äºããå®éã«ã¯ãæºåãæŽã£ãHTMLã宿ããŠããŸãã é¢ä¿ãããã¹ãŠã®ãããã¯ã«é¢ããæ
å ±ãåŒãåºãïŒçŸåšã¯å®å
šã«å®äºïŒãHTMLãæçµåºåã«è¿œå ããã ãã§ãã ããã«ã¯äœãå¿
èŠã§ããïŒ æåã«ãçŠæ¢ãèªåçã«ã¬ã³ããªã³ã°ãããŸãïŒãããã¯ã®ãªã¹ãã§ã¯äœããã®åœ¢ã§äžŠãã§ããŸãããããã«ç«ã£ãŠããŸã-ãããŠã·ã¹ãã ã¯ç¢ºå®ã«äœããã®æ®µéã§é©åã«ã¬ã³ããªã³ã°ããããšããŸãïŒã æãç°¡åãªæ¹æ³ã¯ãHTMLã³ãŒããçæããŠã¬ã³ããªã³ã°ããããã«åŒã³åºãããã¡ãœããã®ä»£ããã«ã¹ã¿ããæ¿å
¥ããããšã§ãã æ°ããã¡ãœããã§Disclose.phpãæŽæ°ããŸãã
Copy Source | Copy HTML<br/> <br/> public function renderView()<br/>{<br/> return '' ;<br/>}<br/> <br/>
ãããŠä»ãç§ãã¡ã¯ç¬èªã«äœæãããªã³ããã³ãã§åŒã³åºãããšãã§ããŸã-ãŸãã«å¿
èŠãªãšãã«ïŒ
Copy Source | Copy HTML<br/> <br/> public function renderSelf()<br/>{<br/> return parent::renderView();<br/>}<br/> <br/>
ããŠã話ããã€ãã³ãã«å¿ããŠãå³å¯ã«å®çŸ©ãããç¬éã«åŒã³åºãããããã«ããŸãã ã€ãã³ãã«ã¯ããcontroller_front_send_response_beforeãã®ãããªååãä»ããŠããŸãã 圌ããããã¯ãããã«ã¯ãç§ãã¡èªèº«ã®ãªãã¶ãŒããŒãäœæããå¿
èŠããããŸãã æ¬¡ã®å
容ã®ãã¡ã€ã«Linker / Insider / Model / Observer.phpãäœæããŸãã
Copy Source | Copy HTML<br/> <br/> class Linker_Insider_Model_Observer<br/>{<br/> public function renderSelf(Varien_Event_Observer $observer )<br/> {<br/> // , - - ? <br/> // , ( - fire') <br/> if ( $block = Mage::app()->getLayout()->getBlock( 'insider' )) {<br/> // HTML- <br/> $insiderHtml = $block ->renderSelf();<br/> // front controller, HTML <br/> $front = $observer ->getData( 'front' );<br/> // <br/> $front ->getResponse()->append( 'insider' , $insiderHtml );<br/> }<br/> }<br/>}<br/> <br/>
次ã«ããªãã¶ãŒããŒãå¿çããå¿
èŠãããå
容ã説æããå¿
èŠããããŸãã ããã¯ãconfig.xmlã®<global>ããŒãã§è¡ãããŸãã
< events > <!-- -->
< controller_front_send_response_before > <!-- - -->
< observers > <!-- ! -->
< insider_renderself > <!-- -->
< class > insider/observer </ class > <!-- ... -->
< method > renderSelf </ method > <!-- -->
</ insider_renderself >
</ observers >
</ controller_front_send_response_before >
</ events >
å®éããããç§ã話ãããã£ãããšã®ãã¹ãŠã§ããã ããã«ãããMagentoã®å
éšäœæ¥ãã¿ãŒã³ã®äžéšãçè§£ã§ããããã«ãªããŸãã
self-PRã§ã®éé£ãé¿ããããããªã³ã¯ã¯æäŸããŠããŸããã æ¡åŒµæ©èœã®æçšæ§ãè©äŸ¡ããã人ã¯ãMagento Connectã§ãããèŠã€ããããšãã§ããŸãã