2013-12-18 22 views
7

比較ビューで商品を表示しようとしていますが、管理パネルからstatus = disabledと設定されています。無効な製品は製品一覧ページなど商品詳細ページに表示されないように、デフォルトのMagentoので比較表示で無効化/無効化された商品を表示

が、これは可能ではないようです。

はどういうわけか、私はMage_Catalog_Helper_Productをオーバーライドすることにより、製品の詳細ページを製品一覧ページで無効になった製品を表示するために管理して。その中で、私は次のコードにコメントしました:

// if (!$this->canShow($product)) { 
    //  return false; 
    // } 

ここで、無効な製品を比較表示でも表示する方法を教えてください。

+0

を私は完全に検索コアファイル内のセクションを比較するが、私は何かを見つけることができませんでした。.. –

答えて

4

長い時間を探して、メジャーコアファイルから解を抽出できなかった場合、status属性と同じ属性を作成しました。私はその属性をArchive(Yes/No)と命名しました。この新しい属性は、製品が中断されているかどうかを正当化します。

アトラス、この新しい属性に関連するすべての製品リスト、製品の詳細、ホームページをフィルタリングします。Archiveのみ。

は私が status status = disabled製品のイエスとして Archiveをトリガ enabledなどと同時にすべての製品を変更しますMVCのアクションを、書くために計画しています。私はすぐにここでコードを共有します。

コード

URLが呼び出され、次のコードを実行しますダミーコントローラ書く:

public function updateproductsAction() { 
    Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 

    $collectionConfigurable = Mage::getResourceModel('catalog/product_collection') 
      ->addAttributeToFilter('type_id', array('eq' => 'configurable')) 
      ->addAttributeToFilter('entity_id', array('gt' => 0));  // This line should be removed to affect all the configurable products. (to avoid execution time-out) 

    echo 'Total are ' . count($collectionConfigurable) . '<br/>'; 
    $i = 1;       
    foreach($collectionConfigurable as $p) { 
     $product = Mage::getModel('catalog/product')->load($p->getId()); 
     $product->save(); 
     echo $i++ . ') The product Id with ' . $p->getId() . " is done...." . "<br/>"; // if the execution time-out occurs, note down the last product id and change the value above in addAttributeToFilter. so the execution runs from the last stopped product. 
    } 
} 
4

はチェックすることをお勧めします: パブリック関数ISENABLED

Magentoの\アプリケーション\コード\コア\のメイジ\カタログ\ヘルパー\製品\ Flat.phpに

+0

フラットテーブルを使用して店舗を利用するため、注意が必要です。このような理由で、すべての店舗で有効になっているわけではありません。 –

4

を私は何に簡単に見て撮影してきましたブロックがリストを作成しています。開始するには良い場所は、次のファイルのようになります。比較/

アプリ/コード/コア/メイジ/カタログ/ブロック/製品/ List.phpアイテムを取得するための責任がある関数のgetItemsあり

フロントエンドに表示する準備が整いました。この関数の終わりには、視認性の方法でアイテムを渡します。

Mage::getSingleton('catalog/product_visibility') 
       ->addVisibleInSiteFilterToCollection($this->_items); 

イム取り外す場合は100%必ずこのコードの最後のセクションは、あなたが欲しいものを取得しますが、非常に基本的なレベルで変更することができませんあなたが設定したステータスを無視するコレクション。

+0

私は上記のコードをコメント/削除すると、私は比較セクションで 'シンプルな商品 'を得ることができます。つまり、コードは、「中断された製品」ではなく「シンプルな製品」を可能にするためのものです。私は最近私のプロジェクトでこれをやったので、私は100%確信しています:) –

関連する問題