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块和块类型