代码之家  ›  专栏  ›  技术社区  ›  Joe Mastey

添加到Magento管理端全局搜索

  •  0
  • Joe Mastey  · 技术社区  · 14 年前

    如何将数据库字段添加到Magento全局搜索?我想在customers中创建一个自定义的“business name”字段,然后使用管理面板上的全局搜索栏进行搜索。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Joe Mastey    14 年前

    经过一番搜寻,我在一家商店里找到了它 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();
    

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

    谢谢