2

私はphpを初めて使用します。ファイルで次のようにすることで、価格で表示されている製品のみに昇順で並べ替え順序を定義できるかどうかを確認します。

Mage_Adminhtml_Model_System_Config_Source_Catalog_ListSort

$options[] = array(
    'label' => Mage::helper('catalog')->__('Price'),
    'value' => 'price'
    'getCurrentDirection' => 'asc'
);

残りの属性は降順です。

残念ながら、機能していないようです。誰か助けてもらえますか?

4

1 に答える 1

0

間違ったファイルを探していると思います。上で説明した ListSort ファイルには、並べ替えに使用できるオプションがリストされているだけです。現在のソートには何もしません。

また、参照したファイルは Adminhtml スコープにあります。フロントエンドでデフォルトの並べ替えを変更する必要がある場合は、他の場所を探す必要があります。

あなたの質問は、私が正しく理解している場合、並べ替えに価格が選択されている場合にデフォルトでASCを並べ替える方法ですが、デフォルトでDESCを並べ替えると、並べ替えに別の属性が使用されます。

フロントエンドについては、Mage_Catalog_Block_Product_List_Toolbar ファイルの getCurrentOrder() 関数を確認する必要があります。ここでは、デフォルトの方向とソート順の両方を利用できます。app/core/Mage ファイルをハックするのは良い方法ではありませんが、このファイルをコピーして app/local/Mage/* (コア ファイルとまったく同じディレクトリ) に配置すると、既定のメソッドが自動的にオーバーロードされます。

バックエンドについては、Mage_Adminhtml_Block_Widget ファイルの _prepareCollection() 関数を確認できます。デフォルトの並べ替えは「desc」なので、価格の場合は「asc」に変更するだけです。ここでも、app/local/Mage/* にコピーを作成する必要があります。次のようなことを試すことができます (Magento 1.7.1.0 の場合、これは行 507-508 です):

変化する

$columnId = $this->getParam($this->getVarNameSort(), $this->_defaultSort);
$dir      = $this->getParam($this->getVarNameDir(), $this->_defaultDir);

$columnId = $this->getParam($this->getVarNameSort(), $this->_defaultSort);
if($this->getVarNameSort() == 'price') {
    $dir      = $this->getParam($this->getVarNameDir(), 'asc');
} else {
    $dir      = $this->getParam($this->getVarNameDir(), $this->_defaultDir);
}

これが役立つことを願っています!

于 2012-10-19T17:09:44.650 に答える