Magento - сортировка товаров по идентификатору - PullRequest
4 голосов
/ 13 января 2012

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

Я думал, что сортировка по опции «Позиция» на внешнем интерфейсе сделает это, но, похоже, она не работает для всех моих категорий. Я использую Community Edition 1.6.1.

Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 13 января 2012

Копировать:
app/code/core/Mage/Catalog/Block/Product/List.php

в (создать соответствующую папку):
app/code/local/Mage/Catalog/Block/Product/List.php

Найти следующую строку в List.php:

$this->_productCollection = $layer->getProductCollection();

добавить следующую строку ниже:

$this->_productCollection->joinField('category_product', 'catalog/category_product', 'product_id', 'product_id=entity_id', array('store_id'=> Mage::app()->getStore()->getId()), 'left');

// Here is the explain
/*
* @param string $alias 'category_product'
* @param string $table 'catalog/category_product'
* @param string $field 'name'
* @param string $bind 'PK(product_id)=FK(entity_id)'
* @param string|array $cond
* @param string $joinType 'left'
*
* default definition
* joinField($alias, $table, $field, $bind, $cond=null, $joinType='inner') 
*
*/

Скопировать
app/code/core/Mage/Catalog/Model/Config.php

в
app/code/local/Mage/Catalog/Model/Config.php

Найти следующую строкув Config.php:

'position'  => Mage::helper('catalog')->__('Position')

Заменить на:

$options = array(
   'position'  => Mage::helper('catalog')->__('Position'),
   'product_id' => Mage::helper('catalog')->__('Product ID')
); 

PS: я пишу эту статью из дома, которая не установлена ​​на моей машине Magento, поэтому я не сделалне тест, но структура в порядке.Если вы столкнулись с какой-либо проблемой, убедитесь, что имя поля и таблицы.

1 голос
/ 22 июня 2016

Копировать

app/code/core/Mage/Catalog/Model/Config.php

в

app/code/local/Mage/Catalog/Model/Config.php

Найти следующую строку в Config.php:

$options = array(
    'position'  => Mage::helper('catalog')->__('Position')
);

Заменить на:

    $options = array(
//        'position'  => Mage::helper('catalog')->__('Position')
        'entity_id' => Mage::helper('catalog')->__('Last')
    );

затем измените направление сортировки по умолчанию на нисходящее: открыть app/design/frontend/your theme/your layout/layout/catalog.xml добавить строку

<action method="setDefaultDirection"><dir>desc</dir></action>

в блоке

<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
   <block type="page/html_pager" name="product_list_toolbar_pager"/>
      <!-- The following code shows how to set your own pager increments -->
here

   </block>
</block>
1 голос
/ 22 октября 2012

На всякий случай, если кому-то нужно: Измените это:

'product_id' => Mage::helper('catalog')->__('Product ID')

на это:

'entity_id' => Mage::helper('catalog')->__('Product ID')
...