Модификация фильтра коллекции моделей Magento - PullRequest
0 голосов
/ 29 октября 2010

Два моих модуля конфликтуют, и это вызывает серьезную проблему, я не так уж хорошо знаком с бэк-программированием, поэтому я пришел сюда в надежде, что кто-нибудь может мне помочь.PS Я пытался решить это самостоятельно в течение по крайней мере часа или двух, узнал совсем немного, но не все, что было достаточно просто, чтобы решить эту проблему.

Мне нужно изменить следующую функцию , поэтому, когда он используется аналогично примеру, приведенному ниже, он исключает из коллекции любые элементы, в которых id_path содержит строку 'questions'.

public function filterByIdPath($idPath)
{
    $this->getSelect()
        ->where('id_path = ?', $idPath);
    return $this;
}

$collection = Mage::getResourceModel('seosuite/core_url_rewrite_collection')
  ->filterAllByProductId($productId)
  ->sortByLength('ASC')
  ->addStoreFilter($storeId, false);
  ->filterByIdPath($idPath)

Класс, в котором находится эта функцияin является расширенной версией Mage_Core_Model_Mysql4_Url_Rewrite_Collection.У нас также есть доступ к request_path, если id_path не подходит.

Вот несколько примеров id_paths: product / 2/3 / questions, product / 5/3, category / 3, product / 3/3 /вопросы.

1 Ответ

0 голосов
/ 29 октября 2010

Это не проверено.

public function filterByIdPath($idPath)
{
    $this->addFieldToFilter('id_path', array('nlike'=>'%'.$idPath.'%'));
    return $this;
}

«nlike» означает «НЕ НРАВИТСЯ», а «%» является подстановочным знаком.Предположительно, вы бы назвали функцию как ->filterByIdPath('questions')

...