gpt4 book ai didi

magento - 用 2 个模块扩展同一个类? Magento模块冲突?

转载 作者:行者123 更新时间:2023-12-04 05:54:30 25 4
gpt4 key购买 nike

我试图制作一个更改页面标题的模块,我的模块工作正常,直到我启用另一个名为

Yoast_CanonicalUrl。

Yoast 模块不涉及任何标题方法,但扩展了与我的模块相同的类:Mage_Page_Block_Html_Head{}

我尝试过扩展 yoast 类(如果存在),但是一旦启用 yoast 模块,我的模块就会停止运行。

我查看了 yoasts 代码,看看他的方法是否与我的方法冲突,而他们没有。

似乎只要加载 Yoast 我的代码就不再加载了:(

这是我的 Head.php:

<?php

if (!(string)Mage::getConfig()->getModuleConfig('Yoast_CanonicalUrl')->active == 'true')
{
class Yoast_CanonicalUrl_Block_Head extends Mage_Page_Block_Html_Head{}
}
class Company_MetaKeyManager_Block_Head extends Yoast_CanonicalUrl_Block_Head
{
public function setTitle($title)
{
$this->_data['title'] = Mage::getStoreConfig('design/head/title_prefix') . ' ' . $title
. ' ' . Mage::getStoreConfig('design/head/title_suffix');
return $this;
}
public function getTitle()
{
if (empty($this->_data['title'])) {
$this->_data['title'] = $this->getDefaultTitle();
}
return htmlspecialchars(html_entity_decode(trim($this->_data['title']), ENT_QUOTES, 'UTF-8'));
}
public function getDefaultTitle()
{
return 'Hello World';
}
}

这是我的 Config.xml:
<?xml version="1.0"?>
<config>
<modules>
<Company_MetaKeyManager>
<version>0.1.0</version>
</Company_MetaKeyManager>
</modules>
<global>
<blocks>
<MetaKeyManager>
<class>Company_MetaKeyManager_Block</class>
</MetaKeyManager>
<page>
<rewrite>
<html_head>Company_MetaKeyManager_Block_Head</html_head>
</rewrite>
</page>
</blocks>
<helpers>
<MetaKeyManager>
<class>Company_MetaKeyManager_Helper</class>
</MetaKeyManager>
</helpers>
</global>
</config>

有人对为什么会发生这种情况有任何建议吗?

最佳答案

Eeek - 不要尝试有条件地声明类名/扩展。

在处理潜在的类加载和优先级冲突时,首先要记住 PHP 自动加载器的优先级(include_path)

它按以下顺序尝试:

./app/code/local
./app/code/community
./app/code/core

因此,无论任何内部 Magento 重写如何,在本地定义的任何内容都将覆盖社区。

使用您的扩展程序,或者更改 Yoast 扩展程序以扩展您的扩展程序。或者,从 Yoast 扩展 config.xml 中删除重写,并让您的扩展扩展 Yoast 之一。

如果您碰巧想要覆盖相同的功能,请务必
return parent::myfunction()

在您的功能结束时,它将执行扩展类的功能。

简单的。

关于magento - 用 2 个模块扩展同一个类? Magento模块冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9684032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com