首页 文章

Magento限制管理产品

提问于
浏览
1

我想知道是否有人知道我在哪里可以修改用于 Mage_Adminhtml_Catalog_ProductController 的集合(app / code / core / Mage / Adminhtml / controllers / Catalog / ProductController.php)?我改写/创建哪种方法来更改要展示的产品?

编辑1:我宁愿有办法使用观察员,即 . 我需要将哪些事件应用于我的代码?

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
    }
}

2 回答

  • 1

    你可以听 catalog_product_collection_load_beforecatalog_product_collection_load_after .

    要查找您感兴趣的事件,请使用Alan Storm的技术:编辑app / Mage.php dispatchEvent()方法,在开头添加以下行:

    Mage::log('Event: ' . $name, null, 'events.log');
    

    这将在/var/log/events.log文件中写入所有事件 .
    我'd put a link to Alan'的原帖,但我可以't find it right now: if anyone find it I' ll更新我的答案 .

  • 1

    最快的方法是复制此文件

    app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php
    

    进入本地范围并向_prepareCollection()函数添加新过滤器 .

    但是,这可能不是升级友好的 . 对于升级 - 友好的解决方案,我建议创建一个新的Magento模块,并在那里附加过滤器到_prepareCollection()函数 .

相关问题