Magento 页面解析

Magento 页面解析

Magento 页面解析

1:首页: 2栏右

2: list 页面 : 3栏

3:detail 页面: 2栏右

4: shopping 页面: 2栏右

5: checkout yemian :2栏右

6: 登录 注册页面: 1栏

7: search 页面 : 3栏

8: account 登录之后页面 : 2栏 左

默认是有 5个block :上面一个header

中间3个 left content right

下面一个 footer

Layout文件一般包含block、reference、action三种标签。

对于Magento系统,首先会将系统中相关相关的layout合并,合并一般是包括app\design\frontend\base \default\layout目录下的xml文件,【合并读取】

以及指定的模板下面的对应的layout文件。最终普通网页合并之后的从default下 output=”toHtml”进行最终的输出,那么解析的block或其他元素也是从该节点进行解析

1.顶层的block一般位于page.xml中,如下所示。Output表示通过toHtml进行输出。默认使用3columns.phtml三列布局。Type对应Mage_Page_Block_Html类。

<block type=”page/html” name=”root” output=”toHtml” template=”page/3columns.phtml”>

2.在顶层的block中,一般包含以下几个关键部分,分别是Html头部、网页头部、内容左部中部右部、网页底部这么几个基本结构布局。

<block type=”page/html_head” name=”head” as=”head”> Html头部:Html头部主要包括增加默认的js和css相关文件。

<block type=”page/html_header” name=”header” as=”header”> 页面头部:主要包括一些头部链接、语言切换等

<block type=”page/html_breadcrumbs” name=”breadcrumbs” as=”breadcrumbs”/>

<block type=”core/text_list” name=”left” as=”left” translate=”label”> 左右部侧栏,一般有product_compare_sidebar、catalog.leftnav、catalog.product.related等侧边栏,具体需要看对应页面的所对应的侧边栏。

<block type=”core/text_list” name=”content” as=”content” translate=”label”> content内容一般在具体页面中进行指定,不同模块的内容肯定是不同的,在page.xml文件中只是定义了一个as。

<block type=”core/text_list” name=”right” as=”right” translate=”label”>

<block type=”page/html_footer” name=”footer” as=”footer” template=”page/html/footer.phtml”> footer包括了切换store、常见链接等

3.每个模块一般情况下都会有对应的模块xml文件,如目录布局文件为catalog.xml文件,支付为checkout.xml。不过对于magento系统来说,最终还是合并读取的。

4.如果是目录模块被调用,在catalog.xml中,首先会将default节点中所有元素进行加载和解析,然后根据对应产品模块具体页面加载 对应的节点,如分类文件默认采用catalog_category_default节点下的元素更新,

如果分类设置为Is Anchor,则采用catalog_category_layered节点下的元素更新。产品默认采用catalog_product_view节点下 的元素更新。

也就是说在page.xml

里面有:默认是采用page.xml 这个布局 + 对应模块的默认布局+ 具体的block的更新布局=最后的布局文件,引用之后只做更新处理。引用了不处理,那么还是原来的block,

引用都是引用的page.xml里面的这几个大的block。

header的问题:默认【这个里面有 searth / topLinks/store_language / topmenu/breadcrumbs】

Left:

Content:

Right:

Footer:

9: local.xml

布局的话:

一栏

2栏左

2栏右

3栏

1: block解析

<block type=”checkout/cart_sidebar” name=”cart_sidebar” template=”checkout/cart/sidebar.phtml” before=”-“>

<block type=”core/text_list” name=”cart_sidebar.extra_actions” as=”extra_actions” translate=”label” module=”checkout”>

<label>Shopping Cart Sidebar Extra Actions</label>

</block>

</block>

什么意思?

解析这个的时候,先找到半类名 checkout的block 对应的半类名。得到 Mage_Checkout_Block 再和 cart_sidebar 组成全类名 Mage_Checkout_Cart_Sidebar.

然后对应的template。然后 before=“-”:表明在同级之上。 排在最上面。 name需要唯一。

在解析子block的时候,如type=”core/text_list”的Block,会告诉他的父节点cart_sidebar该子节点信息,这 样,在父节点所对应的模板文件中,

才能使用getChildHtml(“cart_sidebar.extra_actions”)函数调用子节点的 html信息。

如果有as节点,表示该节点可以在其他地方被引用,也就是说可以在其他地方再次解析,比如as=’left’,则可以在其他地方用reference中进行添加相关block操作。

2: layout中是通过reference的方式来增加或替换Block, 通过remove来移除Block, 通过update来更新Block, 通过after或before来调整Block位置等等。

F ④: 根据使用的layout中的block标签中的type=”…”找到使用的Block, Page模块对应的Block是所有其他Block的“父类”, 会自动加载,

这个Block里面的方法可以被其他Block使用。

问题》如何更改 category list的左侧栏:???

<catalog_category_default translate=”label”>

<label>Catalog Category (Non-Anchor)</label>

<reference name=”root”>

<action method=”setTemplate”><template>page/2columns-left.phtml</template></action>

</reference>

<reference name=”left”>

<!– <block type=”catalog/navigation” name=”catalog.leftnav” after=”currency” template=”catalog/navigation/left.phtml”/>–>

<block type=”catalog/navigation” before=”-” name=”catalog.vertnav” template=”catalog/navigation/vert_nav.phtml”/>

</reference>

这样就可以 不加载默认的left block,反而加载一个自定义的block。

问题: 首页布局更新???

譬如首页可以在cms.xml的cms_index_index标签中设置,

问题3: 2.编辑左右栏的内容,中间栏的内容

magento左右栏怎么添加block?这个是大多数magento模板初学者会遇到的问题,答案就是,在xml添加。在xml中声明添加到左栏还是右栏,添加使用哪个.phtml文件。

问题4:

3.添加css js文件

xml可以定义不同页面的结构,并且可以给不同的页面添加不同的css js文件。我们的phtml可以做到这点,但是远没有xml做的好。

如果你在magento的产品详细页加了一个js效果,你可以将要加载的js文件只在这个页面加载,那么我们就要到定义产品详细页的页面的xml来添加。

问题4: Remove block 用“remove”来从布局里移除一些特殊的block(products compare, products viewed and related products)

<reference name=”right”>

<remove name=”catalog.compare.sidebar” />

<remove name=”left.reports.product.viewed” />

<remove name=”catalog.product.related” />

</reference>

问题5: 添加js css

<reference name=”head”>

<action method=”addItem”><type>skin_js</type>

<name>js/stereotabs.js</name></action>

<action method=”addItem”><type>skin_js</type>

<name>js/shadowbox/shadowbox.js</name></action>

</reference>

问题6: 用“unsetChild”来从布局里移除一些特殊的block(products compare, products viewed and related products)

<reference name=”left”>

<!– Removed the Newsletter from the left sidebar –>

<action method=”unsetChild”><name>left.newsletter</name></action>

<action method=”unsetChild”><name>tags_popular</name></action>

</reference>

问题7: 一切布局尽在 local.xml中来处理。

问题8: magento 调试

在php里做调试的时候我们经常用exit来中断流程,Magento也是一样,但有些后台运行的代码是没办法用exit中断后输出信息到浏览器的,

比如监听事件的方法运行的时候,又比如api接口被调用的时候,这是可以用写日志文件的方式来记录一些特定内容来做调试,Magento自带了一个写日志的静态方法:Mage::log()。

Mage::log(‘$Message’);

可以把你想要记录的信息写进系统自带的system.log文件里,当然你也可以自己新建一个文件来写记录,代码如下

Mage::log($loginfo, null, “test.log”);

http://blog.csdn.net/shuishui8310/article/details/5570926 这个网页也经常看看吧–magento技术

问题8: magento的促销,价格战。

买2送一: Buy X get Y free : 注意设置: 就是 你必须至少 买X+Y 个,才能起作用。而且不是在cart里面,是subtotal-discount,这里显示的。

疑问1:magento的Mgt-commerce 的在admin的 menu 为什么无法去掉?

疑问2: 为什么module装完之后,总是在配置的时候 出现404 错误呢?

疑问3: 价格如何可以自定呢? 就是说购买的东西是按照 每块/ 或者per feet ,如何价格根据前台的js变化而变化。——-或者如何更改价格在前台。

疑问4: 配置的产品和 简单产品如何可以自由转换? 已经解决,需要明白原理,并写上注释。

疑问5: 关于产品的图片 颜色问题—color switch 的处理方案,需要注释。

很多的module都是需要注释的。注释的时候可以明白。

http://yanfeili.wordpress.com/2013/08/26/magento-%E9%A1%B5%E9%9D%A2%E8%A7%A3%E6%9E%90/

相关推荐