2012-02-13 8 views
2

Magentoサイトで作業しています(Magento ver。1.5.1.0) - 答える際に注意してください。私はMagentoを初めて使用しています。 ベストセラーでソートするオプションを取得しようとしていますが、ローカルファイルを追加してコアファイルをオーバーライドして、次のように処理しました。Magentoベストセラーが動作しない - 修復または回避策を探す

httpdocs/app/code/local/Mage/Catalog/Block/Product /一覧/ Toolbar.php:

public function getAvailableOrders() 
{ 
    //return $this->_availableOrder; 
    //Custom Order list Edit 
    $this->_availableOrder = array(
     'qty_ordered' => $this->__('Best Sellers'), 
     'entity_id' => $this->__('Latest arrivals'), 
     'name' => $this->__('Name'), 
     'price' => $this->__('Price') 
    ); 
    //Custom Available Order -Edit finish 
    return $this->_availableOrder; 
} 

とをhttpdocs /アプリ/設計/フロントエンド/デフォルト/ localsite /テンプレート/カタログ/製品/リスト/ toolbar.phmtl:

<fieldset class="sort-by"> 
    <label><?php echo $this->__('Sort by') ?></label> 
    <select onchange="setLocation(this.value)"> 
     <option value="<?php echo $this->getOrderUrl('entity_id', 'desc') ?>"<?php if($this->isOrderCurrent('entity_id') && $this->getCurrentDirection() == 'desc'): ?> selected="selected"<?php endif; ?>> 
      Newest Products 
     </option> 
     <option value="<?php echo $this->getOrderUrl('qty_ordered', 'desc') ?>"<?php if($this->isOrderCurrent('qty_ordered') && $this->getCurrentDirection() == 'desc'): ?> selected="selected"<?php endif; ?>> 
      Best Sellers 
     </option> 
     <option value="<?php echo $this->getOrderUrl('price', 'asc') ?>"<?php if($this->isOrderCurrent('price') && $this->getCurrentDirection() == 'asc'): ?> selected="selected"<?php endif; ?>> 
      Lowest Price 
     </option> 
     <option value="<?php echo $this->getOrderUrl('price', 'desc') ?>"<?php if($this->isOrderCurrent('price') && $this->getCurrentDirection() == 'desc'): ?> selected="selected"<?php endif; ?>> 
      Highest Price 
     </option> 
     <option value="<?php echo $this->getOrderUrl('name', 'asc') ?>"<?php if($this->isOrderCurrent('name') && $this->getCurrentDirection() == 'asc'): ?> selected="selected"<?php endif; ?>> 
      Name A-Z 
     </option> 
     <option value="<?php echo $this->getOrderUrl('name', 'desc') ?>"<?php if($this->isOrderCurrent('name') && $this->getCurrentDirection() == 'desc'): ?> selected="selected"<?php endif; ?>> 
      Name Z-A 
     </option> 
    </select> 
</fieldset> 

これはある意味で働きます私は今ベストセラーと同じ方法で並べ替えるベストセラーソートオプションを持っていますダッシュボードで残念ながら、ダッシュボードのベストセラーセクションと結果として私の並べ替えリストは完全に間違っています。

誰もが同じ結果を達成するために並べ替えることができる別の属性を知っている人はいませんか? - ダッシュボード>レポート>製品>注文された商品に行くと、ソートのオプションでこれを再現することができます。

利用可能なソートオプションのリストはありますか?

** * ** * ** * ** * ** * ***UPDATE* ** * ** * ** * ** * ** * ***

私は今、ベストセラーに掲載されている製品がすべて古い製品であることに気付きました。最近追加された製品は、ベストセラーリストには含まれていません。これらの同じ製品は、ダッシュボードでZにソートするか、上記のソートオプションを使用して新しい製品AからZ、それに古い製品AからZが続くように並べても、別々にリストされます。

ヒント、アドバイス、お手伝いをします。

+0

@Josh Caswellこの問題に興味をお持ちいただきありがとうございます。返信が遅いのでご迷惑をおかけして申し訳ありません。あなたのご意見に応じて質問を更新しました。うまくいけば、この新しい情報が役立ちます。 – WebweaverD

答えて

1

カタログ製品にはqty_orderedという属性がないので、あまり運がないでしょう。何が起こっているのかは、セカンダリソートコラムまたはデータベースからの自然順序です。

バックエンドは、ビュー数などにMage_Reportsモジュールを使用します。あなたの目標に到達する最も明白な方法は、カスタムアトリビュートを製品に追加し、販売が行われたときにイベントオブザーバを更新することです。 「製品リストのソートに使用」を必ず設定すると、コアクラスをオーバーライドすることなく自動的にソートすることができます。

これ以外にも、私が考えることができるのは、アップグレード時に何かを壊す可能性のある複雑なクラスオーバーライドがたくさん含まれていることだけです。

+0

ありがとうございます。私が私の質問で言ったように私はMagentoには新しいので、あなたが提案しているものをどのように実装するのかは本当にわかりません。私は少しの研究を行い、提案されたものをどれだけ得ることができるかを見ていきます。 – WebweaverD

+0

イベントオブザーバシステムの操作方法を理解するのに非常に役立つことが[この記事(http://codemagento.com/2011/04/observers-and-dispatching-events/)]でした。基本的には、config.xml、アトリビュートを追加するセットアップスクリプト、イベントオブザーバを含む単純なモジュールを作成する必要があります。私はそれが難しいと思うが、それは見た目ほど難しくはない。がんばろう! – wierdo

+0

リンクをありがとう、私は今週それに亀裂があり、うまくいけば勝利に戻ります。 – WebweaverD

関連する問題