Php Magento-仅在单个类别上设置默认产品排序

Php Magento-仅在单个类别上设置默认产品排序,php,magento,sorting,Php,Magento,Sorting,我试图将Magento中单个类别的默认(不可编辑)排序设置为SKU DESC,并仅隐藏该类别的排序选项 基本上,我希望这只排序的SKU,描述。。。无论在点击此页面之前在其他页面上选择了什么选项 到目前为止,我能够隐藏排序功能,没有问题,但设置排序会给我带来一些麻烦 我添加了:/app/design/frontend/default/idp/template/catalog/category/view.phtml if($_SERVER['REMOTE_ADDR'] == {MY IP}) :

我试图将Magento中单个类别的默认(不可编辑)排序设置为SKU DESC,并仅隐藏该类别的排序选项

基本上,我希望这只排序的SKU,描述。。。无论在点击此页面之前在其他页面上选择了什么选项

到目前为止,我能够隐藏排序功能,没有问题,但设置排序会给我带来一些麻烦

我添加了:/app/design/frontend/default/idp/template/catalog/category/view.phtml

if($_SERVER['REMOTE_ADDR'] == {MY IP}) :
  if($_category->getId() == 4) :
    $_category->_data['default_sort_by'] = "sku_sort";
   endif;
endif;
这是在这个页面上设置默认排序顺序,但我找不到如何强制它转到DESC而不是ASC。。任何帮助都将不胜感激

作为一个临时解决方案,在我弄明白这一点之前,我正在使用找到的解决方案,页面上的第一条注释有一个专门的解决方案(将
created\u at
更改为
sku

此解决方案的唯一问题是它会影响所有基于sku的排序页面和结果,而不仅仅是单个页面。您可以从catalog/product/list.phtm中修改工具栏对象,删除可用的排序属性并设置所需的默认排序:

$_category = Mage::registry('current_category');
if ($_category && $_category->getId() == 4 && $this->getListBlock()){
   $availableOrders = $_category->getAvailableSortByOptions();
   unset($availableOrders['position']); // Delete the sort attributes you don't need

   $this->getListBlock()
    ->setAvailableOrders($availableOrders)
    ->setDefaultDirection('desc')
    ->setSortBy('sku_sort');
}

希望这对
/app/design/frontend/default/idp/template/catalog/product/list.phhtml

有帮助。这段代码没有达到预期的效果。。。当检查
$this->getListBlock()
时,它总是失败。。。这样就不会设置该块(放置在页面顶部)