Questions tagged «overrides»

有关覆盖核心功能(类重写,本地代码池,主题覆盖)的问题。对于URL重写,请改用“ url-rewrite”标签。

8
如何在Magento2中覆盖核心块,模型和控制器
我陷入了在Magento2中覆盖核心模型块和控制器的困境。有人可以帮忙吗? 让我们以列表工具栏为例,我需要添加一个新的排序选项,称为sort by most Popular。如何添加?我想为此,我们需要在块级别添加选项,并在List.php集合级别添加条件。

5
当扩展全局覆盖一个类并且我想使用原始类时该怎么办?
我们正在使用一个扩展程序,该扩展程序将覆盖Mage_Catalog_Block_Product_List_Toolbar块。 <global> <blocks> <catalog> <rewrite> <product_list_toolbar>Amasty_Shopby_Block_Catalog_Product_List_Toolbar</product_list_toolbar> </rewrite> </catalog> </blocks> </global> 虽然扩展程序在分层导航类别的上下文中起作用,但是当我们在自己的内部模块中将任意产品列表插入另一个(自定义)视图时,重写的类无法正常工作。如果我们仅出于测试目的删除扩展覆盖,则一切正常。 我们如何只为自己的控制器撤消扩展的重写,而无需编辑扩展开发人员的社区代码?

2
在Magento 2中扩展/覆盖JS
由于Magento2使用RequireJS加载脚本,并且不再有皮肤文件夹,所以我遇到了一个问题: 如何用修改后的版本替换Magento的模块JS文件? 例如,属于Magento_Checkout扩展名的opc-checkout-method.js。据我所知,它没有在requirejs-config.js文件中定义。 我的扩展名在Magento_Checkout之后加载,因此其requirejs-config.js数据附加在生成的requirejs-config文件的末尾。 还是应该以其他方式执行此操作而不替换整个脚本?

5
如何获得所有类重写的列表?
除了查看所有配置文件之外,是否有办法列出所有重写以及其他潜在冲突?我必须分析一些具有大量扩展和自定义修改的项目,并希望尽可能地自动化。 最重要的是要检测重写同一类的扩展,但是我也想保留所有重写的列表,以保持概述。目前,我在电子表格中手动维护此列表。 我在Magento Connect上找到了这个扩展名(“扩展名冲突”),但从评论和发行说明来看,它似乎已经过时了。

4
重写lib文件的现代方法
这个问题是众所周知的:lib类是通过自动加载器专门加载的,除以下内容外,我们不能更改它们: 将它们完全复制到lib之前检查的codePool中。 安装PSR-0自动加载器,指定自动加载类映射,然后将文件完全复制到该文件夹​​结构中。[我目前的解决方案] 我处于困境中,因为我想潜在地触摸其中的许多文件-但是出于我的理智和商店的稳定性/可升级性的考虑,我不想复制整个库类。 现在显然可以找到解决该问题的方法,但是它们都有自己的一系列问题: 进行AOP路由,并使用基于PHP的库(如Go!)!AOP:最后我检查了这将要求Magento类由作曲家自动加载器加载,而不仅仅是可用的。Flyingmana 在这方面做过一些工作,但肯定还不能用于生产,我的需求更加迫切。我还想将其作为扩展发布,这将需要更多的作曲家设置。 进行AOP路由并使用本机PHP扩展:这可能是目前最有利的扩展,但它需要安装单独的扩展,更不用说它不适用于HHVM。 使用PHP的classkit和/或runkit:这是另一个本机PHP扩展,因此与上述问题相同。 修补呼叫站点以使用我自己的命名空间(\Danslo\Varien_X)版本,然后从原始(\Varien_X)扩展:有太多的呼叫站点需要修补,这将需要大量的重写。没有选择。 我自己说:应该有可能: 编写我自己的自动装带器。 将原始类复制到一个单独的文件夹({root_dir}/var/tmp),将其包装在中namespace \Magento { < original contents > }。 包括该文件。 包括我修改过的课程 OriginalClass extends Magento\OriginalClass {} 显而易见的缺点是:动态代码生成,正则表达式,加载重写类的开销很小。但是我几乎可以确定,当我只想触摸/添加约100行时,它将胜过复制约5000行代码。 我知道我要问很多,但是是否有一些现代且相对干净的东西可以帮助解决此问题?
21 overrides  core 

4
如何使用自定义模块覆盖HTML文件?
我正在开发Magento 2中用于付款方式的自定义模块。目前,我正在使用供应商目录中的cc-form.html,并且模块运行正常。参见下面的路径: 供应商/ magento /模块付款/视图/前端/网络/模板/付款/cc-form.html 有什么方法可以覆盖HTML文件吗? 注意:我想使用自定义扩展名覆盖它。参见下面的路径: 应用/代码/命名空间/模块/视图/前端/网络/模板/付款/cc-form.html 任何帮助,将不胜感激。谢谢!

2
重写Magento 2类与插件
Magento 2具有与Magento 1相对的插件/拦截/拦截器的概念。 对于每种公共方法,它们的作用就像事件发生之前或之后。很好 您也可以使用around插件来替换方法的功能。 但是Magento 2仍然提供了或多或少以M1方式重写类的可能性。 我想看到一些重写类而不是使用插件的例子。 我知道这在您要更改核心保护方法的行为时很有用,但是在其他情况下是否建议或需要重写?

3
Magento 2:重写控制器
我该如何在Magento 2中重写控制器(实际上是一个动作)? 我按照这里的指示进行了尝试: 我有Namespace_Module一个用di.xml文件调用的模块,该模块已考虑在内,因为同一系统可在模型和模块上运行。 示例: <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd"> <!-- this one doesn't work for a controller action --> <preference for="Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatistics" type="Namespace\Module\Controller\Adminhtml\Dashboard\RefreshStatistics" /> <!-- this one works for a model --> <preference for="Magento\Customer\Model\Resource\GroupRepository" type="Namespace\Module\Model\Resource\Customer\GroupRepository" /> <!-- this one works also for a block --> <preference for="Magento\Backend\Block\Dashboard" type="Namespace\Module\Block\Backend\Dashboard" /> </config> …

3
在Magento 2中为Abstract类添加新方法
就像这个线程所说的那样:在Magento 1中覆盖Magento 2中的抽象类, 我可以创建一个全新的类。在Magento 2中,我们需要使用插件,但是插件仅允许我修改现有方法。如果我想添加新方法该怎么办? 例: 此类vendor/magento/module-ui/Component/AbstractComponent.php具有一个数组数组:$components,没有用于取消/删除该数组元素的函数。那么如何创建该功能呢?

5
Magento 2:如何设置核心块的自定义模板
我正在尝试覆盖模块中的register.phtml,但似乎存在一些配置问题,这些问题使Magento无法使用我的自定义模板覆盖核心模块中的模板。我检查了代码,但找不到问题。有人可以帮忙吗?提前致谢。module.xml: <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Namespace_ModuleName" setup_version="0.0.2"> <sequence> <module name="Magento_Customer"/> </sequence> </module> </config> 命名空间\模块名称\视图\前端\布局下的customer_account_create.xml: <?xml version="1.0"?> <layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd"> <referenceBlock name="customer_form_register"> <arguments> <argument name="template" xsi:type="string">Namespace_ModuleName::form/register.phtml</argument> </arguments> </referenceBlock> </layout> composer.json: { "name": "namespace/module-modulename", "description": "modulename", "type": "magento2-module", "version": "0.0.2", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { "php": "~5.5.0|~5.6.0", "magento/framework": "~0.42", "magento/magento-composer-installer": …

1
如何覆盖config.xml
我需要将“与我们联系”页面的电子邮件模板类型从“文本”更改为“ HTML”。我发现它在config.xml中 <email> <contacts_email_email_template translate="label" module="contacts"> <label>Contact Form</label> <file>contact_form.html</file> <type>text</type> </contacts_email_email_template> </email> 如何正确覆盖config.xml [编辑]这适用于文件app / code / core / mage / contact / etc / config.xml,以下答案适用于任何... / mage / ANYTHING / etc / config.xml

3
如何重写已经重写的类?
更新:我发现我实际上需要重写的类SMDesign_SMDZoom_Block_Product_View_Media不是SMDesign_ColorswatchProductView_Block_Product_View_Media我最初想的那样。但是,完全相同的问题仍然适用。 SMDesign SMDZoom扩展重写了块类'catalog / product_view_media'。的xml看起来像这样: <global> ... <blocks> <smdzoom> <class>SMDesign_SMDZoom_Block</class> </smdzoom> </blocks> <blocks> <catalog> <rewrite> <product_view_media>SMDesign_SMDZoom_Block_Product_View_Media</product_view_media> </rewrite> </catalog> </blocks> .... </global> 我想再次重写该类。我想重写此smdzoom模块正在重写的catalog / product_view_media类。能做到吗?配置xml在我的模块中看起来是什么样的? 当前,这是我的模块初始化xml文件: <config> <modules> <Goorin_SMDZoom> <active>true</active> <codePool>local</codePool> </Goorin_SMDZoom> <depends> <Mage_Catalog /> <SMDesign_SMDZoom /> </depends> </modules> </config> 和模块config.xml文件: <global> <blocks> <gbismdzoom> <class>Goorin_SMDZoom_Block</class> </gbismdzoom> <catalog> <rewrite> <product_view_media>Goorin_SMDZoom_Block_Product_View_Media</product_view_media> </rewrite> </catalog> …


2
如何在Magento2中覆盖或禁用核心插件?
我正在使用Magento2建立市场。因此,我需要能够使用供应商的客户凭证来加载客户的订单。 问题在于,Magento2使用插件来验证只有该订单的客户(或管理员)才能加载该订单。 在这种情况下,我需要覆盖整个插件或覆盖protected方法isAllowed()。不修改内核怎么办? Magento\Sales\Model\ResourceModel\Order\Plugin\Authorization 看起来像这样: use Magento\Authorization\Model\UserContextInterface; use Magento\Framework\Exception\NoSuchEntityException; class Authorization { /** * @var UserContextInterface */ protected $userContext; /** * @param UserContextInterface $userContext */ public function __construct( \Magento\Authorization\Model\UserContextInterface $userContext ) { $this->userContext = $userContext; } /** * Checks if order is allowed * * @param \Magento\Sales\Model\ResourceModel\Order $subject * @param …

7
如何在Magento 2中覆盖.phtml文件
我想自定义产品详细信息页面,因此需要覆盖以下位置的一些.phtml文件。 所以,我想知道,如何重写一个.phtml的文件vendor\magento\module-catalog\view\frontend\templates\product或vendor\magento\module-theme\view

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.