duanhe1976 2012-12-07 17:04
浏览 60
已采纳

Magento - 使用购物车页面上的自定义模块添加自定义块

I have created a custom module and am trying to include a block just after Shopping cart table and before Totals box. But I am unable to get it in that exact place. I can get my block to appear in content section just below everything else but not in between.

If I override checkout.xml and cart.phtml then I can achieve where I want to display my block but I dont want to override the existing files, hence my custom module. Could some one point out what is it that I' missing or doing wrong.

Here's my module code,

app/code/local/CM/Test/etc/config.xml

<?xml version="1.0"?>
<config>
<modules>
    <CM_Test>
        <version>0.1.0</version>
    </CM_Test>
</modules>
<frontend>
    <routers>
        <test>
            <use>standard</use>
            <args>
                <module>CM_Test</module>
                <frontName>test</frontName>
            </args>
        </test>
    </routers>
    <layout>
        <updates>
            <cm_test module="CM_Test">
                <file>test.xml</file>
            </cm_test>
        </updates>
    </layout>
</frontend>
<global>
<blocks>
    <test>
    <class>CM_Test_Block</class>
        </test>
</blocks>
</global>
</config>

app/code/local/CM/Test/Block/Somblock.php

  <?php
  class CM_Test_Block_Somblock extends Mage_Core_Block_Template
  {
   protected function _construct()
   {
    parent::_construct();
    $this->setTemplate('test/testing.phtml');
   }

   public function methodBlock()
   {
     return 'informations about my block !!' ;
   }
}

app/code/local/CM/Test/controllers/IndexController.php

 <?php
 class CM_Test_IndexController extends Mage_Core_Controller_Front_Action
 {
    public function indexAction()
    {
      $this->loadLayout();
      $this->renderLayout();
    }
    public function somethingAction()
    {
      echo 'test mamethode';
    }
 }

app/design/frontend/mytheme/layout/test.xml

   <layout version="0.1.0">
  <default></default>
  <test_index_index>
        <reference name="root">
          <action method="setTemplate"><template>page/2columns-right.phtml</template>       
              </action>
        </reference>
        <reference name="content">
              <block type="test/somblock" name="test.somblock" template="test/testing.phtml"/>
            </reference>
  </test_index_index>

  <checkout_cart_index>
  <reference name="checkout.cart.form.before">
        <block type="test/somblock" name="test.somblock">
              <action method="setTemplate"><template>test/testing.phtml</template></action> 
        </block>
        <block type="test/somblock" name="test.somblock" template="test/smtesting.phtml"/>      
  </reference>
  </checkout_cart_index>
 </layout>

app/design/frontend/default/mytheme/template/test/testing.phtml

 TESTING <br/>
 <?php 
 echo $this->getChildHtml('testing.somblock');
 echo "HELLO";

app/design/frontend/default/mytheme/template/test/smtesting.phtml

 <?php
 echo $this->methodBlock();

app/etc/modules/CM_Test.xml

 <?xml version="1.0"?>
 <config>
 <modules>
  <CM_Test>
   <codePool>local</codePool>
   <active>true</active>
  </CM_Test>
</modules>
</config>

When I accessed http://mydomain.com/test/index/index it gave me the following o/p

TESTING HELLO

When I accessed http://mydomain.com/checkout/cart/index it gave me the following o/p

output of my module

But I need the output information about my block just after shopping cart table and above Subtotals box, how do i do that?

  • 写回答

1条回答 默认 最新

  • douyi6290 2012-12-10 07:46
    关注
    <checkout_cart_index>
        <reference name="checkout.cart">
            <block type="test/somblock" name="test.somblock" before="checkout.cart.totals" template="test/testing.phtml" />
            <block type="test/somblock" name="test.somblock" after="test.somblock" template="test/smtesting.phtml"/>      
        </reference>
    </checkout_cart_index>
    

    You are referring to the form before the cart, while you want it in the cart. Change your reference and add it before the totals (or before the discount if you like).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置