質問

私は非常に奇妙な問題を抱えています。 「Taille_ecran」という名前のカスタム属性を作成しました。これは、英語の「画面サイズ」を意味します。この属性のラベルは、1.2、1.6、2、5、6などの数字です...

このようなカスタムフィルターを追加しようとするとき:

$_productCollection->addAttributeToSelect('taille_ecran');
$_productCollection->addFieldToFilter(array(
    array('attribute'=>'taille_ecran','lteq'=>$_GET['max_size']),
));

ラベルの値ではなく、「Taille_ecran」のThosesラベルのOption_idによってフィルターフィルター。実際、ここに私のラベルのIDがあります:

31 => 1.2 41 => 5など...

7未満のラベル「LTEQ」を取得しようとしたとき、結果はありません。35を試すと、1.2の結果が1つあります。

また、製品リストにこの値を印刷しようとしています。

echo $_product->getTailleEcran();

// print 31 when it's for 1.2...

何が起こっているのかを明確に説明するのは非常に難しいです。他の属性にこの問題はありません。

よろしくお願いします!

役に立ちましたか?

解決 3

FabianとKiatngのおかげで、この問題を解決するために私がしたことです。新しいカスタム属性を作成し、ドロップダウンを使用して価格を使用しました。

これにより、ソースコードを変更しないことができますが、今では機能しています。

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

他のヒント

これを試して:

$attribute = Mage::getSingleton('catalog/config')->getAttribute(Mage_Catalog_Model_Product::ENTITY, 'taille_ecran');
$source = $attribute->getSource();
$optionId = $source->getOptionId($_GET['max_size']);
$_productCollection->addAttributeToFilter('taille_ecran', array('lteq'=>$optionId));

達成したいことは、Magentoによってサポートされていません。オプションフィルターはに基づいています option id, 、これはあなたがそうであることを意味します できない 値でフィルタリングします。

これが必要な場合は、独自の属性を作成する必要があります。 decimal そして、あなた自身のソースモデルを持っています value = key, 、だからあなたはまだ持っています select バックエンドでは、値でフィルタリングできます。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top