Magento学习手记(第五天)

第五天:

一、重写magento核心类示例

    第一步:创建目录结构;

    第二步:创建config.xml和YEMA_CoreClassRewriteTest.xml;

    第三步:清缓存,在System->Configuration->Advanced中确认模块加载;

    第四步:注册blocks、helpers和models;

 1         <blocks>
 2             <core_class_rewrite_test>
 3                 <class>YEMA_CoreClassRewriteTest_Block</class>
 4             </core_class_rewrite_test>
 5         </blocks>
 6         <helpers>
 7             <core_class_rewrite_test>
 8                 <class>YEMA_CoreClassRewriteTest_Helper</class>
 9             </core_class_rewrite_test>
10         </helpers>
11         <models>
12             <core_class_rewrite_test>
13                 <class>YEMA_CoreClassRewriteTest_Model</class>
14             </core_class_rewrite_test>
15         </models>

 

    第五步:创建一个页面及相关控制器;

  config.xml:

 1         <frontend>
 2             <routers>
 3                 <core_class_rewrite_test>
 4                     <use>standard</use>
 5                     <args>
 6                         <module>YEMA_CoreClassRewriteTest</module>
 7                         <frontname>coreclassrewritetest</frontname>
 8                     </args>
 9                 </core_class_rewrite_test>
10             </routers>
11         </frontend>

 

  controllers/IndexController.php: 

1 <?php
2 class YEMA_CoreClassRewriteTest_IndexController extends Mage_Core_Controller_Front_Action {
3     public function indexAction() {
4         echo "Index Page";
5     }
6     public function showAction() {
7         echo "Show Page";
8     }
9 }

 

  第六步:增加一个布局(Layout),配置config.xml、创建app/design/frontend/base/default/layout/coreclassrewritetest.xml文件:

  config.xml:

1         <layout>
2             <updates>
3                 <core_class_rewrite_test>
4                     <file>coreclassrewritetest.xml</file>
5                 </core_class_rewrite_test>
6             </updates>
7         </layout>

 

  coreclassrewritetest.xml:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <layout>
 3     <core_class_rewrite_test_index_show>
 4         <reference name="root">
 5             <action method="setTemplate">
 6                 <template>page/2colums-right.phtml</template>
 7             </action>
 8         </reference>
 9     </core_class_rewrite_test_index_show>
10 </layout>

 

    第七步:在showAction方法增加加载layout和渲染layout

        $this->loadLayout();

        $this->renderLayout();

    最终结果如下图显示:

 

 

    第八步:增加翻译文件(多语言)

  a、 编辑config.xml文件;

1         <translate>
2             <modules>
3                 <Translation_Test>
4                     <files>
5                         <default>Translation_Test.xml</default>
6                     </files>
7                 </Translation_Test>
8             </modules>
9         </translate>

 

    b、 在app/locale/en_US中新建文件Translation_Test.xml;

    c、 在控制器中使用多语言翻译;

        echo $this->__('pisTol');

        此时,前端页面显示效果如下:

    d、 在Translation_Test.xml文件中增加多语言内容

        "pisTol","HeZiAng"

        此时,清除缓存并刷新页面后,显示效果如下:

    第九步:增加新商品内容块

    a、 新建/Block/Newproducts.php文件并编辑;

    b、 新建/template/coreclassrewritetest/newproduct.phtml文件并编辑;

    c、 编辑coreclassrewritetest.xml布局文件;

1         <reference name="content">
2             <block type="core_class_rewrite_test/newproducts" name="block_newproducts" template="coreclassrewritetest/newproducts.phtml" />
3         </reference>

 d、 在Newproducts类中添加getProducts()方法

1     public function getProducts() {
2         $products = Mage::getModel('catalog/product')->getCollection()
3             ->addAttributeToSelect('*')
4             ->setOrder('created_at')
5             ->setPageSize(5);
6         
7         return $products;
8     }

 e、 前端页面显示数据

1 <ul>
2 <?php foreach($this->getProducts() as $_product): ?>
3     <li><?php echo $_product->getName() ?></li>
4 <?php endforeach; ?>
5 </ul>

    最终结果如下图显示:

 

    第十步:重写核心类

    a、 创建YEMA/CoreClassRewriteTest/Model/Catalog/Product.php文件

1 class YEMA_CoreClassRewriteTest_Model_Catalog_Product extends Mage_Catalog_Model_Product {
2     function function_name() {
3         ;
4     }
5 }

    注意:在重写一个类的时候,最好是遵循原有类的目录结构。

    b、编辑/YEMA/ CoreClassRewriteTest /etc/config.xml文件,在models节点下增加:

1 <catalog>
2          <rewrite>
3                <product>YEMA_CoreClassRewriteTest_Model_Catalog_Product</product>
4          </rewrite>
5 </catalog>

    c、 保存对config.xml文件的编辑后,这时使用的类从Mage_Catalog_Model_Product变为YEMA_CoreClassRewriteTest_Model_Catalog_Product,如下图所示:

 

 

 

    d、 重写getName()方法,在商品名称前加一个“pisTol”前缀

1 public function getName() {
2 
3     return "pisTol-" . $this->_getData ( 'name' );
4 }

 

 

    备注:重写核心类并不是最好的定制化代码的方式,因为,该行为有可能对原有应用程序造成一定破坏。更加稳健的方式是使用“事件处理器”。

    不过,不幸的是,采用该方式并不能覆盖系统在定制化过程中的所有修改点,这时候就必须重写核心类。重写核心类可以依照如下步骤进行:

  • 创建空类集成需要重写的类;
  • 黏贴希望重写的类的方法;
  • 在config.xml注册重写的类;

 

二、开启Magento开发者模式

    第一步:修改index.php文件(MAGENTO_ROOT/index.php)

1     //Modified by pisTol 20160129(Remove Annotation)
2     Varien_Profiler::enable();
3 
4     //Modified by pisTol 20160129(Remove Annotation)
5     ini_set('display_errors', 1);

 

    第二步:设置服务器变量$_SERVER['MAGE_IS_DEVELOPER_MODE'](Apache的httd.conf)

#Modified by pisTol 20160129(Add Content)
SetEnv MAGE_IS_DEVELOPER_MODE DEV;

 niginx环境变量配置:

 1 fastcgi_param RUNTIME_ENVIROMENT 'DEV'                                                                                                                                                                                    

 

转载于:https://www.cnblogs.com/pisTol/p/Magento_study_note_5.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值