如何覆盖社区模块组件与Magento的PHP文件(How to override community

2019-11-03 05:42发布

我想覆盖范围内“script.php的”文件“社区”块。

覆盖第三方模块http://connect20.magentocommerce.com/community/Anaraky_GDRT_1

Magento的版本:1.7.0

这里的社区模块文件树:

-app
 - code 
  - community
   - Anaraky
    - Gdrt
     - Block
      - Script.php 

     - etc
      - Config.xml
     - Helper
      - Data.php
     - Module
      - Adminhtml
      - Observer.php

我想重写script.php的文件,我的自定义模块

这里是我的自定义模块文件树:

- app 
  - code 
    - local 
      - Anarakyoverride 
       - Gdrtoverride 
        - Block 
          - Script.php 
        - etc
         - config.xml

另外,我有我的添加自定义(Anarakyoverride_Gdrtoverride)模块的代码config.xml文件如下面的代码

<?xml version="1.0"?>
<config>
    <modules>
        <Anarakyoverride_Gdrtoverride>
            <version>1.0.8</version>
        </Anarakyoverride_Gdrtoverride>
    </modules>
    <global>        
        <blocks>
            <gdrt>
                <class>Anarakyoverride_Gdrtoverride_Block</class>
            </gdrt>
        </blocks>
    </global>

</config>

任何一个可以帮助我,并建议重写第三方模块?

模块的更多细节是http://connect20.magentocommerce.com/community/Anaraky_GDRT_1安装的模块,并覆盖script.php的文件在您的自定义模块,即应用程序/代码/本地/ Anarakyoverride / Gdrtoverride /座/ script.php的

感谢和问候,维沙尔

Answer 1:

尝试下面的代码在你的XML

<global>
    <modules>
        <Anarakyoverride_Gdrtoverride>
            <version>1.0.8</version>
        </Anarakyoverride_Gdrtoverride>
    </modules>
    <blocks>
        <gdrtoverride><class>Anarakyoverride_Gdrtoverride_Block</class></gdrtoverride>
        <gdrt>
            <rewrite>
                    <script>Anarakyoverride_Gdrtoverride_Block_Script</script>
            </rewrite>
        </gdrt>
    </blocks>
   /* Only if you want */
    <models>
        <gdrt>
            <rewrite>
                <state>Anarakyoverride_Gdrtoverride_Model_State</state>
            </rewrite>
        </gdrt>
    </models>
   /* Only if you want */
</global>   
<frontend>
  <layout>   
        <updates>   
            <gdrtoverride>   
                <file>gdrtoverride.xml</file>   
            </gdrtoverride>   
        </updates>   
    </layout>
</frontend>   
</config>

或仅块节点为XML

<blocks>
        <gdrtoverride>
            <class>Anarakyoverride_Gdrtoverride_Block</class>
        </gdrtoverride>
    <gdrt>
        <rewrite>
            <script>Anarakyoverride_Gdrtoverride_Block_Script</script>
        </rewrite>
    </gdrt>
</blocks>

然后在您的script.php

<?php
   class Anarakyoverride_Gdrtoverride_Block_Script extends Anaraky_Gdrt_Block_Script
   {
        // create your method and write your code
   }

你也需要这个确切配置复制到您的模块配置 - 指定的类名块 - 和(重要!),请确保以下发生:

  1. 你的配置是社区模块的配置后装
  2. 你的类从社区模块的类扩展。

到社区模块后加载模块的配置,你可以使用<depends>在您的应用程序代码的/ etc /模块/

<depends>
    <Community_Module /> <!-- e.g. -->
</depends>


文章来源: How to override community block module with php file in magento