Во-первых, я хотел бы сказать, что я совершенно новичок в Magento, поэтому, отвечая, пожалуйста, не принимайте никаких знаний о Magento - однако я был бы очень благодарен любому, кто может указать мне правильное направление.
Проблема, с которой мы сталкиваемся, связана с новым виджетом продукта, который размещен на главной странице - я не установил его, я не настроил Magento, я просто пытаюсь исправить это для друга, который ждал более год, в течение которого ее разработчик создает сайт, указанный как шесть недель, теперь почти работает.
версия Magento - 1.5.1
Проблема в том, что товары в виджете новых продуктов сортируются по news_from_date - теперь я не знаю, откуда magento извлекает это, и, похоже, он не соответствует порядку добавления продуктов, поэтому план сортировки by entity_id desc, мне удалось закодировать это в выпадающий список сортировки, но я изо всех сил пытаюсь достичь этого в виджете новых продуктов.
Я не полностью понимаю структуру файла magentos, и хотя я ожидаю, что этот код будет в папке виджетов, я не могу найти его там, и Google Trawling предложил, что файл, на который я должен смотреть, находится здесь:
Приложение / код / ядро / Mage / Каталог / блока / продукта / New.php
этот файл содержит следующий блок кода, который, я думаю, мне следует посмотреть:
protected function _beforeToHtml()
{
$todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
$collection = $this->_addProductAttributesAndPrices($collection)
->addStoreFilter()
->addAttributeToFilter('news_from_date', array('or'=> array(
0 => array('date' => true, 'to' => $todayDate),
1 => array('is' => new Zend_Db_Expr('null')))
), 'left')
->addAttributeToFilter('news_to_date', array('or'=> array(
0 => array('date' => true, 'from' => $todayDate),
1 => array('is' => new Zend_Db_Expr('null')))
), 'left')
->addAttributeToFilter(
array(
array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')),
array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null'))
)
)
->addAttributeToSort('news_from_date', 'desc')
->setPageSize($this->getProductsCount())
->setCurPage(1)
;
$this->setProductCollection($collection);
return parent::_beforeToHtml();
}
Теперь я попытался поиграть с этим и изменить его различными способами, и, кажется, ничего не меняется, так что я думаю, что я не в том месте, поскольку мне даже не удалось сломать виджет.
Последнее, что я попробовал, было это:
protected function _beforeToHtml()
{
$todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
$collection = $this->_addProductAttributesAndPrices($collection)
->addStoreFilter()
->addAttributeToSort('entity_id', 'desc')
->setPageSize($this->getProductsCount())
->setCurPage(1)
;
$this->setProductCollection($collection);
return parent::_beforeToHtml();
}
.... Ничего, без изменений, нада. Любые указатели очень ценятся - я думаю, что я погрузился в глубокий конец здесь, и я тону в сложной громоздкой системе, которую я не понимаю.
Заранее спасибо, ребята