2012-01-28 31 views
2

まずMagentoには全く新しいと言いたいので、答えにMagentoの知識はないと思っています。しかし私は正しい方向に向けることができる人にとっては非常に素晴らしいものです。Magento新製品ウィジェット

私たちが抱えている問題は、ホームページに置かれている新しい製品ウィジェットです。私はそれをインストールしませんでした。私はMagentoをセットアップしませんでした。私はちょうど待っていた友人のためにこれを修正しようとしています。彼女の開発者が6週間の見積もりサイトを制作するために1年以上経った今、それは今のところ作品です。

Magentoのバージョン1.5.1

問題は、新製品のウィジェット内の製品はnews_from_dateによってソートされていることです - 今私は、Magentoのはからこれを引いているところを知らないし、順番に対応しているように見えるdoesntの製品が追加されているので、計画がentity_id descでソートされています。これをドロップダウンソートリストにコード化することができましたが、私は新製品ウィジェットでこれを達成するのに苦労しています。私はいけない

は完全にmagentosファイルの構造を理解し、私はこのコードはウィジェットフォルダにあることを期待しながら、私はそこにそれを見つけると私は見てする必要があるファイルを示唆しているグーグルのトロールはここにあることはできません。

アプリ/コード/コア/メイジ/カタログ/ブロック/製品/ New.php このファイルは私が見てされるべきだと思う次のコードブロックが含まれます。

protected function _beforeToHtml() 
{ 
    $todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT); 

    $collection = Mage::getResourceModel('catalog/product_collection'); 
    $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds()); 

    $collection = $this->_addProductAttributesAndPrices($collection) 
     ->addStoreFilter() 
     ->addAttributeToFilter('news_from_date', array('or'=> array(
      0 => array('date' => true, 'to' => $todayDate), 
      1 => array('is' => new Zend_Db_Expr('null'))) 
     ), 'left') 
     ->addAttributeToFilter('news_to_date', array('or'=> array(
      0 => array('date' => true, 'from' => $todayDate), 
      1 => array('is' => new Zend_Db_Expr('null'))) 
     ), 'left') 
     ->addAttributeToFilter(
      array(
       array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')), 
       array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null')) 
       ) 
     ) 
     ->addAttributeToSort('news_from_date', 'desc') 
     ->setPageSize($this->getProductsCount()) 
     ->setCurPage(1) 
    ; 

    $this->setProductCollection($collection); 

    return parent::_beforeToHtml(); 
} 

は今、私はこれで遊んで、変化しようとしていますそれはいろいろな形で変わっているようですので、私は間違った場所にいると思います。ウィジェットを起動します。

protected function _beforeToHtml() 
{ 
    $todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT); 

    $collection = Mage::getResourceModel('catalog/product_collection'); 
    $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds()); 

    $collection = $this->_addProductAttributesAndPrices($collection) 
     ->addStoreFilter() 
     ->addAttributeToSort('entity_id', 'desc') 
     ->setPageSize($this->getProductsCount()) 
     ->setCurPage(1) 
    ; 

    $this->setProductCollection($collection); 

    return parent::_beforeToHtml(); 
} 

....何も、変更なし、灘:私が試した

最終のものは、このでした。私は、ここの深いところで自分自身を投げ込んでしまったと思います。私は理解しにくい複雑な厄介なシステムに溺れています。事前の人々で

おかげ

答えて

2

news_from_dateフィールドはadminに「日から新製品としての設定」と呼ばれていることを知って役立つはず。これは通常、製品の編集ページの「一般」タブ(以前の開発者が変更していない場合)にあり、製品を作成する際の初期のフィールドもあります。

マニュアルフィールドの理由は、将来の日付が与えられたり、意図的に空白になって新しい製品リストから除外されるためです。リストの時間を制限するために、「新しい製品を日付に設定する」フィールドもあります。

サイトのキャッシングにより、リストがあまり頻繁に変更されないことが保証されます。これは、リコールすれば24時間に1回だけです。つまり、「新しい製品を日付から変更する」を変更すると、任意の効果。キャッシュをフラッシュすることで、強制的に問題を解決できます。同じ理由でコードの変更が効果がない場合、明日は変更されることがあります。


あなたがして設計されたとして、それは自動更新によって上書きされないようにapp/code/local/Mage/Catalog/Block/Product/に変更New.phpをコピーする代わりに、日付フィールドを使用しての正常な動作を変更するつもりなら。編集内容は一見したところで有効に見えます。試してみるとキャッシュをオフにして、終了したらもう一度オンにしてください。

+0

あなたのコメントは問題でした。以前の開発者が変更を上書きしていたapp/code/local/Mage/Catalog/Block/Product/New.phpにコードを追加しました。また、私がこのニュースでニュースを説明してくれてありがとうと思っています。なぜこれで私のプレーが前のコードに影響を与えなかったのか、少し困惑しました。 – WebweaverD

関連する問題