magento后台cms树型组织插件

magento后台的cms,目前是以列表形式组织的,一旦内容多了,查找和定位都比较麻烦。
magento官网上有一个cms树型组织的免费插件,大家可以试试。

http://www.magentocommerce.com/magento-connect/jreinke/extension/6090/clever_cmsmagento-community/Clever_CMS



这个,倒是挺实用的!

如何在Magento的CMS显示指定属性的产品清单

magento的cms中,显示指定目录下的产品清单的语法如下:

{{block type="catalog/product_list" 
    name="product_listing" 
    template="catalog/product/list.phtml" 
    category_id="8" }}

其中category_id中的8是指定的目录id

Magento的CMS显示指定属性的产品清单,首先要下载一个插件,magento connect的地址如下:
http://www.magentocommerce.com/magento-connect/Yoast/extension/1915/yoast-landing-pages
Extension Key 1.0:magento-community/Yoast_Landing_Pages
Extension Key 2.0:http://connect20.magentocommerce.com/community/Yoast_Landing_Pages
代码地址是:http://yoast.com/wp-content/uploads/2010/11/landing_pages.zip
cms中的语法是:

{{block type="Yoast_Filter/Result" 
    name="filter_result" 
    template="catalog/product/list.phtml"  
    attribute_name="color" 
    value="24" 
    category="8" }}

其中color是属性名, 24是属性值,示例链接是:yourmagentoshop.com/f/color/24/ ,f是这个功能的模块名称

xml语法是:

<block type="Yoast_Filter/Result" name="filter_result" template="catalog/product/list.phtml">
<action method="setAttributeName"><attribute_name>color</attribute_name></action>
<action method="setValue"><value>24</value></action>
</block>

原始英文网站可见 :http://yoast.com/landing-pages-module-magento/

几种在magento的cms中显示产品的方法

magento有很多种方法在cms显示产品,下面举些例子说明:

1.显示新产品

进入后台->Page->CMS->home page ,content(内容选项)加入:

{{block type=”catalog/product_new” name=”home.catalog.product.new” alias=”product_homepage” template=”catalog/product/new.phtml”}}

(请注意,您必须要确保你的站点有新的产品,要不然首页就没法显示。所谓的新产品不是传统意义上的你最近添加的产品,而是你在发布产品时指定的某个产品在某个时间段内为新产品。)

2.显示全部产品

同理在content里加入:

{{block type=”catalog/product_list” name=”home.catalog.product.list” alias=”products_homepage” template=”catalog/product/list.phtml”}}

3.一个分类的全部产品

同理在content里加入:

{{block type=”catalog/product_list” name=”home.catalog.product.list” alias=”products_homepage” category_id=”4″ template=”catalog/product/list.phtml”}}

category_id为分类的ID,可以在分类列表中查看。

Magento在CMS Page中增加用户信息变量的简单方法

Magento的cms页面和static block页面中可以用一些指示符来得到相应的信息,如{{skin url=".."}} {{media url="…"}}等。

在Mage_Cms_Block_Page类的_toHtml方法中可以找到下面的代码:

  $helper = Mage::helper('cms');
        $processor = $helper->getPageTemplateProcessor();
        $html = $processor->filter($this->getPage()->getContent());
        …

先获得负责页面解析的processor对象,然后由processor对象负责对页面中的指示符进行解析和替换工作。

查找cms helper类的getPageTemplateProcessor方法,我们得知processor对象是Mage_Cms_Model_Template_Filter类的实例。Mage_Cms_Model_Template_Filter继承自Mage_Core_Model_Email_Template_Filter类,在Mage_Core_Model_Email_Template_Filter类中定义了负责解析相应指示符的一些方法:

public function blockDirective($construction)
public function layoutDirective($construction)
public function varDirective($construction)

等,可以看到其实cms filter里面已经定义了var指示符,但是我们在cms页面的content里面插入{{var customer.name}}并不能正确被解析,原因是customer变量的值没有设置。

其它网站上介绍的方法是通过另外新建一堆类在初始化时设置:
$variables = array('customer'=>Mage::getSingleton('customer/session')->getCustomer());
以下是我自己找到的方法:

在config.xml中加入:

<config>
<global>
<blocks>
<cms>
  <rewrite>
     <page>Glamour_GlsCms_Block_Cms</page>
  </rewrite>
</cms>
</blocks>
</global>
</config>

 

然后在指定的文件中建立以下
 

class Glamour_GlsCms_Block_Cms_Page extends Mage_Cms_Block_Page
{
     protected function _toHtml()
    {

     $helper = Mage::helper('cms');
$variables = array('customer'=>Mage::getSingleton('customer/session')->getCustomer());
           $processor = $helper->getPageTemplateProcessor();
           $processor->setVariables($variables);
        $html = $processor->filter($this->getPage()->getContent());
        $html = $this->getMessagesBlock()->getGroupedHtml() . $html;
        return $html;
    }
}

 

我们就可以直接在cms内容里加入customer的一些信息了。
如:
{{var customer.email}}
{{var customer.firstname}}
比网上其它方式要简单的多!!
它主要是在过滤前,通过setVariables,给过滤器新增过滤的语法!