2010-10-28 3 views
0

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

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

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) 

Класс эта функция находится в является расширенной версией 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/questions.

ответ

0

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

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

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