我目前正在搞乱Magento,我只是想知道是否有人知道我在哪里可以修改用于Mage_Adminhtml_Catalog_ProductController
的集合(app / code / core / Mage / Adminhtml /controllers/Catalog/ProductController.php)?我在改写/创建哪种方法来更改要显示的产品?
EDIT1:我宁愿选择使用观察员,也就是说。我需要将哪些事件应用于我的代码?
EDIT2:最好在这里添加我想要实现的目标;我已经为产品添加了一个额外的属性,该产品包含哪个管理员添加了该特定产品。现在,在管理面板中,当用户查看产品列表时,他们只会看到该属性是其管理员ID的产品。
EDIT3:我偶然发现了catalog_product_load_after
事件观察员,我不确定这是不是正确的,但这就是我所拥有的:
confix.xml
<?xml version="1.0"?>
<config>
<adminhtml>
<events>
<catalog_product_load_after> <!-- Name of Event -->
<observers>
<load_after> <!-- Any Unique Identifier -->
<type>singleton</type>
<class>Drench_Admindetails_Model_Observer</class> <!-- Over Model Class -->
<method>loadAfter</method> <!-- name of function -->
</load_after>
</observers>
</catalog_product_load_after>
</events>
</adminhtml>
</config>
和Model / Observer.php
<?php
class Drench_Admindetails_Model_Observer{
public function loadAfter(){
fb('testasd'); // this just a firephp call
}
}
答案 0 :(得分:1)
最快的方法是复制此文件
app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php
进入本地范围并向_prepareCollection()函数添加新过滤器。
然而,这可能不是升级友好的。对于升级 - 友好的解决方案,我建议创建一个新的Magento模块,并在那里将过滤器附加到_prepareCollection()函数。
答案 1 :(得分:1)
您可以收听catalog_product_collection_load_before
或catalog_product_collection_load_after
。
要查找您感兴趣的活动,请使用Alan Storm的技巧:编辑app / Mage.php dispatchEvent()方法,在开头添加此行:
Mage::log('Event: ' . $name, null, 'events.log');
这将在/var/log/events.log文件中写入所有事件 我已经链接到Alan的原始帖子,但我现在无法找到它:如果有人找到它,我会更新我的答案。