Переписывание Autosuggest (MiniSearch) MagentoPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Переписывание Autosuggest (MiniSearch) Magento

Сообщение Anonymous »

Я стараюсь часами, чтобы успешно переписать функцию автоматической организации Magento, чтобы отображать ProductNames вместо записей истории запросов. Я ничего не хочу необычайно, никаких изображений продукта и еще чего -то, просто простые предложения по названию продукта. Код> Catalogsearch/Model и модель и там создал файл с именем Query.php . Внутри этого файла у меня есть следующий класс и переписать метод: < /p>

Код: Выделить всё

class Aw_CatalogSearch_Model_Query
extends Mage_CatalogSearch_Model_Query {

public function getSuggestCollection() {
$collection = $this->getData('suggest_collection');
if (is_null($collection)) {
$collection = Mage::getModel('catalog/product');
Mage::getSingleton('catalog/product_status')
->addVisibleFilterToCollection($collection);
$collection->getCollection()
->addAttributeToSelect('name')
->addAttributeToFilter('name', array('like' =>
'%'.$this->getQueryText().'%'))
->addExpressionAttributeToSelect('query_text', '{{name}}', 'name')
->addAttributeToSort('name', 'ASC')
->setPageSize(10)
->addStoreFilter($this->getStoreId());
$this->setData('suggest_collection', $collection);
}
return $collection;
}
};
I создал файл XML модуля в App/etc/modules/и конфигурация модуля в App/code/local/aw/catalogsearch/etc/config.xml < /p>

Все хорошо до сих пор, метод перезаписывания getSuggestcollection () < /code> выполняется. < /p>

Проблема возникает в приложении/code/core/mage/catalogsearch/block/autocomplete.php , в методе getsuggestdata () . < /p>

Код: Выделить всё

public function getSuggestData()
{
if (!$this->_suggestData) {
$collection = $this->helper('catalogsearch')->getSuggestCollection();
$query = $this->helper('catalogsearch')->getQueryText();
$counter = 0;
$data = array();
foreach ($collection as $item) {
$_data = array(
'title' => $item->getQueryText(),
'row_class' => (++$counter)%2?'odd':'even',
'num_of_results' => $item->getNumResults()
);

if ($item->getQueryText() == $query) {
array_unshift($data, $_data);
}
else {
$data[] = $_data;
}
}
$this->_suggestData = $data;
}
return $this->_suggestData;
}
< /code>

Когда он итерат над коллекцией, я получаю < /p>

Call to a member function getQueryText() on a non-object ...
< /code>

Точка, которую я не понимаю, заключается в том, что я определил поле псевдонима с именем 'Query_text' в методе коллекции внутри метода GetSuggestCollection () < /code>. Даже когда я использовал что-то вроде getData ('Query_text') 
или $ item-> getQuery_text () , чтобы получить данные этого поля, не работают.
У меня есть сильное чувство, что объект сбора недопустим, поскольку он предполагается в рамках метода getSuggestData () MAGE_CATALOGSEARCH_BLOCK_AUTOCOMPLETE < /code> Class. < /p>

Кто -нибудь может указать мне, как решить эту проблему? Разве невозможно, как указано выше, чтобы собрать предложения из сбора продуктов и передать их AutoComplete.php? Я действительно потерян на этом! этот проект.

Подробнее здесь: https://stackoverflow.com/questions/182 ... of-magento
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»