添加到Magento管理员端全局搜索

时间:2010-03-04 22:31:07

标签: magento

如何将数据库字段添加到Magento全局搜索?我想在客户中创建一个自定义的“商家名称”字段,然后可以在管理面板上搜索该全局搜索栏。

1 个答案:

答案 0 :(得分:1)

经过一番搜索后,我在Mage_Adminhtml_Model_Search_Customer找到了它。此类有一个方法load(),您可以修改该方法以返回其他搜索结果和更改的子文本。奇怪的是,Magento实际上已经为搜索加载所有可能的搜索结果,然后限制它们,但不管这里是在自定义字段上添加搜索的代码:

旧代码:

    $collection = Mage::getResourceModel('customer/customer_collection')
        ->addNameToSelect()
        ->joinAttribute('company', 'customer_address/company', 'default_billing', null, 'left')
        ->addAttributeToFilter(array(
            array('attribute'=>'firstname', 'like'=>$this->getQuery().'%'),
            array('attribute'=>'lastname', 'like'=>$this->getQuery().'%'),
            array('attribute'=>'company', 'like'=>$this->getQuery().'%'),
        ))
        ->setPage(1, 10)
        ->load();

我在本地空间创建了一个类来覆盖此函数并添加了以下内容:

    $collection = Mage::getResourceModel('customer/customer_collection')
        ->addNameToSelect()
        ->joinAttribute('company', 'customer_address/company', 'default_billing', null, 'left')
        ->joinAttribute('company_name', 'customer/company_name', 'entity_id', null, 'left')
        ->addAttributeToFilter(array(
            array('attribute'=>'firstname', 'like'=>$this->getQuery().'%'),
            array('attribute'=>'lastname', 'like'=>$this->getQuery().'%'),
            array('attribute'=>'company', 'like'=>$this->getQuery().'%'),
            array('attribute'=>'company_name', 'like'=>$this->getQuery().'%'),
        ))
        ->setPage(1, 10)
        ->load();

现在我可以使用全局搜索我的自定义属性了!希望这会有助于其他人。

谢谢, 乔