Magento:搜索CMS页面内容以获取关键字

时间:2014-07-31 00:13:16

标签: php magento content-management-system

我试图修改目前只搜索CMS页面标题的搜索功能。我想要搜索页面内容。目前功能如下:

public function getSearchCMSPages($keyword){
    $result = array();
    $storeId    = Mage::app()->getStore()->getId();
    $cmspages = Mage::getModel('cms/page')->getCollection()
    ->addFieldToFilter("is_active",1)
    ->addFieldToFilter('title',array('like'=>'%'. $keyword.'%'))
    ->setCurPage(1)
    ->setOrder('title','ASC');
    $cmspages->load();
    if(count($cmspages))
    {
        foreach($cmspages as $_page)
        {
            $result[] = $_page->getId();
        }
    }
    return $result;
}

我想要做的是修改此功能,以便在CMS页面内容中搜索关键字。

非常感谢任何有关如何解决此问题的帮助或建议。

-Eric

1 个答案:

答案 0 :(得分:1)

你可以试试这个。它对我有用。

public function getSearchCMSPages($keyword)
{
    $result = array();
    $storeId    = Mage::app()->getStore()->getId();
    $cmspages = Mage::getModel('cms/page')->getCollection()
    ->addFieldToFilter("is_active",1)
    ->addFieldToFilter(
        array('title','content'),
        array(
            array('like'=>'%'. $keyword.'%'),
            array('like'=>'%'. $keyword.'%')
        )
    )
    ->setCurPage(1)
    ->setOrder('title','ASC');
    $cmspages->load();

    if(count($cmspages))
    {
        foreach($cmspages as $_page)
        {
            $result[] = $_page->getTitle();
        }
    }
    return $result;
}

与您的代码的唯一区别是,我们现在正在过滤CMS页面的content属性以及title属性,如下所示

    ->addFieldToFilter(
        array('title','content'),
        array(
            array('like'=>'%'. $keyword.'%'),
            array('like'=>'%'. $keyword.'%')
        )
    )

休息是一样的。希望它有所帮助