Добавить в глобальный поиск на стороне администратора Magento

Как я могу добавить поле базы данных в глобальный поиск Magento? Я хочу создать пользовательское поле «название компании» в клиентах, а затем сделать его доступным для поиска с помощью этой глобальной панели поиска на административной панели.


person Joseph Mastey    schedule 04.03.2010    source источник


Ответы (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();

Теперь я могу использовать глобальный поиск для своего пользовательского атрибута! Надеюсь, это поможет кому-то другому.

Спасибо, Джо

person Joseph Mastey    schedule 09.03.2010