Understanding Magento Block and Block Type

I just want to understand the meaning of

 <block type="page/html" name="root" output="toHtml" template="example/view.phtml">

I got many references from Google and understood many things about it but I am still unable to understand the formation of type="page/html" how to form a type for my custom module.

Please explain

type="A/B"

Let me know where this A and B come from?


The A is a module's alias. In this case page is short for Mage_Page_Block (it is defined in app/code/core/Mage/Page/etc/config.xml if you want to see).

The B is the class name relative to the alias, initial letters of each word are capitalised. In this case html becomes Html and is appended to the resolved alias, so it is Mage_Page_Block_Html . This is probably found in the file app/code/core/Mage/Page/Block/Html.php because class names translate directly to locations in Magento.

Were you using a model alias instead of a block alias then page would be Mage_Page_Model instead. The same thing happens for resource models and helpers too. Your own module will need to define these in it's config if it is to have blocks, models and helpers.


For understanding more about magento block types following are some built-in block types which are widely used in layout.

  • core/template : This block renders a template defined by its template attribute. The majority of blocks defined in the layout are of type or subtype of core/template .
  • page/html : This is a subtype of core/template and defines the root block. All other blocks are child blocks of this block.
  • page/html_head : Defines the HTML head section of the page which contains elements for including JavaScript, CSS etc.
  • page/html_header : Defines the header part of the page which contains the site logo, top links, etc.
  • page/template_links : This block is used to create a list of links. Links visible in the footer and header area use this block type.
  • core/text_list : Some blocks like content , left , right etc. are of type core/text_list . When these blocks are rendered, all their child blocks are rendered automatically without the need to call the getChildHtml() method.
  • page/html_wrapper : This block is used to create a wrapper block which renders its child blocks inside an HTML tag set by the action setHtmlTagName . The default tag is <div> if no element is set.
  • page/html_breadcrumbs : This block defines breadcrumbs on the page.
  • page/html_footer : Defines footer area of page which contains footer links, copyright message etc.
  • core/messages : This block renders error/success/notice messages.
  • page/switch : This block can be used for the language or store switcher.
  • This is a list of only commonly used block types. There are many other block types which are used in advanced theme implementations.


    <block type="page/html" name="root" output="toHtml" template="example/view.phtml">
    

    page is a FrontendName defined in etc/config.xml file html is a block class name

    more details:

    in this line type(type="page/html") define block class name related to your template(template="example/view.phtml">) and name is the unique for each block.

    first see folder structure

    app>local>namespace>modulename>etc>config.xml

    we set FrontendName = 'mymodule'

    app>local>namespace>modulename> Block >hello.php

    in hello.php you created a function

       class namespace_modulename_Block_Data extends Mage_Core_Block_Template
       {
        public function mydata()
            {
                $data = "Block is called";
                return $data;
             }     
    }   
    

    and now come to your layout xml page:

    <block type="mymodule/data" name="xyz" template="example/view.phtml"> here mydata is frontend name

    and now come to your template's

    template/example/view.phtml page

    here you can call directly mydata() function

    like

    <div>
    <?php echo $this->mydata(); ?>
    </div>
    

    now you can get your output in browser "Block is called"

    链接地址: http://www.djcxy.com/p/10194.html

    上一篇: PHP中的大括号表示法

    下一篇: 了解Magento块和块类型