サイズ(cm)の数値属性があります。価格のグループ化と同様に、商品を属性の範囲にグループ化したいと思います。
したがって、サイズが151cm、152cm、153cmの製品が複数ある場合は、レイヤードナビゲーションで「150cm-155cm」オプションにグループ化する必要があります。
これを行うための最善の方法は何ですか?
サイズ(cm)の数値属性があります。価格のグループ化と同様に、商品を属性の範囲にグループ化したいと思います。
したがって、サイズが151cm、152cm、153cmの製品が複数ある場合は、レイヤードナビゲーションで「150cm-155cm」オプションにグループ化する必要があります。
これを行うための最善の方法は何ですか?
回答:
推奨される年齢層が異なる商品のレイヤードナビゲーションの設定を完了しました。結局、事前定義された値のセットを使用して、レイヤードナビゲーション用の新しい属性を作成しました。階層化されたナビゲーションにグループ化されたフリーフォームの値を取得するのにも苦労していました。
したがって、あなたのケースでは、実際のサイズフィールドを保持し、製品ページに表示するためにそこに製品サイズを入れ、次にサイズ範囲と呼ばれる別の属性があります。サイズ範囲には、145cm-150cm、150c-155cmなどのように、レイヤードナビゲーションに表示するすべての範囲があります。たぶん、複数選択できるので、150cmの商品が両方に入る可能性はありますか?(または単に重複を避ける)これらの値はすべて階層化されたナビゲーションに表示され、機能します。
欠点は、サイズを2回入力することです。1回は表示用で、もう1回はレイヤードナビゲーション用です。私はAPIを使用してスクリプトで新製品をロードするので、これは少しのコーディングであり、継続的な二重データ入力を必要としません。magentoインターフェースを介して多くの製品をロードしている場合、これは煩わしいかもしれません。
「magentoインターフェースを介して多くの製品をロードしている場合、これは煩わしいかもしれません。」
@RightClick提案として新しい属性を作成し、
Magentoは以下のコードで属性を提供します
$product->setAttributeCode($newValue)
$ProductObject->getResource()->saveAttribute($product, 'attribute_Code');
例:
$productIds = array(1,2,3,4,5);
$products = Mage::getModel('catalog/product')->getCollection()
->addAttributeToFilter('entity_id', array('in' => $productIds));
foreach($products as $product)
{
$product->setSpecialFromDate('2010-10-28');
// below code use for time format
$product->setSpecialFromDateIsFormated(true);
$product->getResource()->saveAttribute($product, 'special_from_date');
}
または、バルク製品インポートモジュールを使用して、その属性をバルク製品に更新します。バルク製品インポートモジュールの場合、多次元配列を作成する必要があります
$data = array(
array(
'sku' => 'simple1',
'attribute_code' => 'range_value1',
),
array(
'sku' => 'simple2',
'attribute_code' => 'range_value2',
),
array(
'sku' => 'grouped',
'attribute_code' => 'range_value3',
),
);
// now update that array collection in one go
try {
/** @var $import AvS_FastSimpleImport_Model_Import */
$import = Mage::getModel('fastsimpleimport/import');
$import
->setUseNestedArrays(true)
->processProductImport($data);
} catch (Exception $e) {
print_r($import->getErrorMessages());
}