1

ホームページの Magento サイトのサイドバーに価格帯を表示しようとしています。ただし、デフォルトでは、Magento は価格帯のカテゴリ フィルターを設定しているため、カテゴリ ID がない場合、価格帯は機能しません。この機能を実装する方法はありますか?

製品のリストを表示する新しいページを作成するというアイデアを思いつきました。フィルターで価格帯を設定する方法がわかりません。これは私が念頭に置いていた基本的なアイデアです:

$_productCollection = Mage::getResourceModel('reports/product_collection')
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('price_to', '4000')
    ->addAttributeToFilter('price_from', '1000');

次に、条件に一致する製品を表示しますが、明らかな理由から、price_to と price_from を使用できません。誰かが私を正しい方向に向けることができますか? 前もって感謝します。

4

1 に答える 1

1

したがって、私のケースでは理想的な結果が得られずに多くの調査を行ったので、次のようなフィルターで製品コレクションを呼び出す list.phtml に似た新しい phtml ファイルを作成しました。

//this is dirty but this is the fastest solution I came up with
$url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 

if(false != strpos($url, 'to=500')):
$_below = 500;
elseif(false != strpos($url, 'to=1000')):
$_to = 1000;
$_from = 500;
elseif(false != strpos($url, 'to=2000')):
$_to = 2000;
$_from = 1001;
elseif(false != strpos($url, 'from=2001')):
$_above = 2000;
endif;

if(false != strpos($url, 'to=500')):
$_productCollection = Mage::getResourceModel('reports/product_collection')
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('price', array(
        'lteq' => $_below));
elseif(false != strpos($url, 'from=2001')):
$_productCollection = Mage::getResourceModel('reports/product_collection')
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('price', array(
        'gteq' => $_above));
else:
$_productCollection = Mage::getResourceModel('reports/product_collection')
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('price', array(
        'from' => $_from,
        'to' => $_to)); 
endif;

選択した範囲リンクに応じて $_from と $_to を設定します。次に、特別に追加した CMS ページで custom.phtml を呼び出します。

{{block type="catalog/product_list" template="catalog/layer/customrange.phtml"}}

次に、サイドバーで、次のように必要な範囲 (ハードコード) を追加しました。

<ul><li><a href="<?php echo $this->getUrl('custom-page').'?from=&to=500'; ?>">below 500</a></li></ul> 

これで、カテゴリ フィルターなしの価格帯ができました。私が知っているのは完璧ではなく、範囲のサイドバーのリンクがハードコードされており、ページングとツールバーに多くの問題があることを考えると、作業する必要があります(正直なところ、まったく機能しません) )しかし、これは私が思いつくことができる最も速い解決策であり、うまくいきます。誰かがより良い解決策を持っている場合は、お気軽にお知らせください。これが他の誰かに役立つことを願っています.

于 2013-08-01T09:03:36.697 に答える