magento
加一个新的Layout到CMS页
生成一个新的xml文件比如名字为cms.xml,然后放到app/etc/modules/目录
<?xml version="1.0"?>
<config>
<global>
<cms>
<layouts>
<redirect>
<label>2 rows</label>
<template>page/2rows-1columns.phtml</template>
</redirect>
</layouts>
</cms>
</global>
</config>
设置页面浏览器标题
1. 在layout文件中配置
<youmodule_yourcontroller_youraction>
<reference name="root">
<action method="setHeaderTitle" translate="title" module="your_module"><title>Your Title for Browser</title></action>
</reference>
</youmodule_yourcontroller_youraction>
2. 在php文件中写代码
在controller文件的action方法中
public function indexAction() {
$this->loadLayout();
$this->getLayout()->getBlock('head')->setTitle($this->__('Your title'));
......
$this->renderLayout();
}
控制首页显示新产品数量
它由两个文件控制,一个是app/code/core/Mage/Catalog/Block/Product/New.php,这个文件在1.31版本以后有所改变。
1.31版本以前的控制行是$products->setOrder(’news_from_date’)->setPageSize(5)->setCurPage(1);
1.31版本以后是文件开头的:Set const DEFAULT_PRODUCTS_COUNT = 5;
通过修改这个数字可以控制新产品显示数量,但是仅仅修改这里还不够,因为在默认模板的new.phtml(路径app/design/frontend/default/default/template/catalog/product/new.phtml)文件里对新产品显示还有限制,这里的限制导致了即使你在上个文件里把新产品数量设成10,它依然显示4个。控制代码是:<?php if ($i>4): continue; endif; ?>
修改方法是把该行代码更换成:
<?php if ($i==5): echo '</tr><tr>'; endif; ?>
<?php if ($i>9): continue; endif; ?>
如果你需要显示10个以上的新产品,需要在下面加上:
<?php if ($i==5): echo '</tr><tr>'; endif; ?>
<?php if ($i==10): echo '</tr><tr>'; endif; ?>
在页面头部添加一个Top Link
场景:当用户进入Customer Login页面时,想看到页面顶部的菜单项增加一项My Blog
打开layout/customer.xml,在<customer_account_login>标签下加入下面的代码
<reference name="top.links">
<action method="addLink" translate="label title" module="customer">
<label>My Blog</label>
<url>http://www.myblog.com</url>
<title>My Blog</title>
<prepare/>
<urlParams/>
<position>100</position></action>
</reference>
上面代码的url标签: <url>http://www.myblog.com</url>
也可以像下面这样传入一个链接
<url helper="customer/getLogoutUrl"/>
这将导致customer模块下的Heper类的getLogoutUrl方法的调用生成恰当的url。
调用静态块(Static Block)
假设有在Magento后台建立一个Static Block名字为'footer_links',在phtml(其他php文件中方法一样)中调用方式如下:
// Block是与店铺相关的,所以要设置setStoreId.
$block = Mage::getModel('cms/block')
->setStoreId(Mage::app()->getStore()->getId())
->load('footer_links');
$content = $block->getContent(); // Block的原始内容已经获得
$processor = Mage::getModel('core/email_template_filter');
$html = $processor->filter($content);
Mage::getModel('core/email_template_filter')->filter()是必须的,因为Static Block里可能包含Magento的模板语言(如:{{store url=""}}),fiter将翻译成实际的值