これは驚くほど厄介です - entity_id は標準属性ではなく (実際には単なるキー フィールドです)、コア コードが同じロジックを 3 か所で繰り返しているため、DB でこれを単純に行う方法がわかりません (urgh) .
また、Magento の古いバージョンから大幅に変更されたため、これに関するチュートリアルやフォーラムの投稿の多くは適用されなくなりました。
できることは、「entity_id」を新しい並べ替えオプションとして追加することです。これは、「Best Value」が並べ替えオプションとして存在するのと同様です。次の例では、「最新」というラベルを付けています。
通常の警告が適用されます: これは拡張機能 (または少なくとも /local/ オーバーライド) で行う必要がありますが、Community Edition 1.7 でオーバーライドする必要がある 3 つのコア ファイル メソッドは次のとおりです。
Mage_Adminhtml_Model_System_Config_Source_Catalog_ListSort
public function toOptionArray()
{
$options = array();
$options[] = array(//benz001
'label' => Mage::helper('catalog')->__('Newest'),
'value' => 'entity_id'
); //end benz001
$options[] = array(
'label' => Mage::helper('catalog')->__('Best Value'),
'value' => 'position'
);
foreach ($this->_getCatalogConfig()->getAttributesUsedForSortBy() as $attribute) {
$options[] = array(
'label' => Mage::helper('catalog')->__($attribute['frontend_label']),
'value' => $attribute['attribute_code']
);
}
return $options;
}
次に、Mage_Catalog_Model_Category_Attribute_Source_Sortby
/**
* Retrieve All options
*
* @return array
*/
public function getAllOptions()
{
if (is_null($this->_options)) {
$this->_options = array(
array(//benz001
'label' => Mage::helper('catalog')->__('Newest'),
'value' => 'entity_id'
), //end benz001
array(
'label' => Mage::helper('catalog')->__('Best Value'),
'value' => 'position'
));
foreach ($this->_getCatalogConfig()->getAttributesUsedForSortBy() as $attribute) {
$this->_options[] = array(
'label' => Mage::helper('catalog')->__($attribute['frontend_label']),
'value' => $attribute['attribute_code']
);
}
}
return $this->_options;
}
そして Mage_Catalog_Model_Config
public function getAttributeUsedForSortByArray()
{
$options = array(
'entity_id' => Mage::helper('catalog')->__('Newest'), //benz001
'position' => Mage::helper('catalog')->__('Position'),
);
foreach ($this->getAttributesUsedForSortBy() as $attribute) {
/* @var $attribute Mage_Eav_Model_Entity_Attribute_Abstract */
$options[$attribute->getAttributeCode()] = $attribute->getStoreLabel();
}
return $options;
}
それらを配置したら、キャッシュをフラッシュして更新すると、構成、カテゴリページ、およびフロントエンドで Newest/entity_id による並べ替えを選択できます。
注: キャッシュをオフにしても、キャッシュをフラッシュすることをお勧めします。キャッシュが無効になっている場合でも、管理者の一部はキャッシュされます。