私は現在、最初のmagentoビルドに表示される製品オプションの画像の取得に取り組んでいます。私はこれをバンドル製品について次のように理解しました:
選択のオプションが作成されたときに、関連する画像(たとえば、見本)のURLを取得しています。今、私は構成可能な製品で同じことをしようとしていますが、それはそれほど単純ではないようです。
構成可能な製品は、利用可能なオプションの各反復を表す単純な製品から構築されます。素晴らしい。単純な製品ごとに画像をアップロードできることは明らかです。これは、これに対する解決策の良いスタートになります。
例:椅子には3つの張りと2つのアームレストの選択肢があります(6つのシンプルな製品)。椅子2/bの場合、張り見本2と肘掛け見本bをアップロードし、それに応じてラベルを付けます。オプションが作成されると、各シンプルな製品に関連付けられている画像のURLをラベルで取得します(おそらく、そのラベルのすべての画像を取得して、重複や何かを削除しますか?)...
Magentoでは、次のように表示されます。
theme / catalog / product / view / type / option/configurable.phtml内
<?php foreach($_attributes as $_attribute): ?>
..//
<select name="super_attribute[<?php echo $_attribute->getAttributeId() ?>]" id="attribute<?php echo $_attribute->getAttributeId() ?>" class="required-entry super-attribute-select">
<option><?php echo $this->__('Choose an Option...') ?></option>
</select>
..//
</div>
<?php endforeach; ?>
<script type="text/javascript">
var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
</script>
バンドルとは異なり、構成可能な製品の選択/オプションは、javascript(in)を介してページに挿入されますjs/varien/configurable.js
。getJsonConfig()
その後、このクラスはすべての情報を提供することに依存します。
この時点で、そのオブジェクトから単純な製品の画像URL情報を取得できるはずです。configuration.jsには、画像を処理するロジックがまったくありません。 これらのURLを取得し、それらを関連するオプション選択に関連付けるにはどうすればよいですか?
私がこれをどのように進めるべきかについてのアドバイスは素晴らしいでしょう。
乾杯
...また:これは本当に非常に簡単な絶対に必要な機能のようです。なぜmagentoはこのようなものを箱から出してサポートしないのですか?
アップデート
似たようなことに興味を持っている人たちのために、私はついにこれを理解しました。
これに対処する私の最初の方法-子製品から画像を取得することはある程度機能しましたが、複数の属性セットの一意の画像URLを取得しようとすると複雑になりました。また、シンプルな製品でオプションごとに画像を提供する必要があるため、多くの不要な労力が必要になります。
@Greg Demetrickが提案した無料のプラグイン(いくつかの変更を加えたもの)を使用することになりました。画像のURLを任意の属性オプションに関連付けることができる非常に堅実な小さなモジュール/およびそれらを取得するためのいくつかのメソッド。
私の最終的な解決策は次のようになります。
catalog / product / view / type / options / configureurable.phtml:
<?php foreach($_attributes as $_attribute): ?>
// markup for the attribute
<script type="text/javascript">
//<![CDATA[
var attribute_data_<?php echo $_attribute->getAttributeId() ?> = {};
attribute_data_<?php echo $_attribute->getAttributeId() ?>.id = '<?php echo $_attribute->getAttributeId() ?>';
attribute_data_<?php echo $_attribute->getAttributeId() ?>.title = '<?php echo $_attribute->getLabel() ?>';
attribute_data_<?php echo $_attribute->getAttributeId() ?>.data = {};
<?php
$a = Mage::getModel('eav/config')->getAttribute('catalog_product', $_attribute->getAttributeId() );
$helper = Mage::helper('attributeoptionimage');
foreach ( $a->getSource()->getAllOptions(true) as $option): ?>
attribute_data_<?php echo $_attribute->getAttributeId() ?>.data.option_<?php echo $option['value'] ?> = {};
attribute_data_<?php echo $_attribute->getAttributeId() ?>.data.option_<?php echo $option['value'] ?>.val = '<?php echo $option['value'] ?>';
attribute_data_<?php echo $_attribute->getAttributeId() ?>.data.option_<?php echo $option['value'] ?>.imageurl = '<?php echo $helper->getAttributeOptionImage($option['value']); ?>';
attribute_data_<?php echo $_attribute->getAttributeId() ?>.data.option_<?php echo $option['value'] ?>.imgtitle = '<?php echo $option['label']; ?>';
<?php endforeach; ?>
//]]>
</script>
<?php endforeach; ?>
これは、属性ごとに1セットずつ、マークアップに出力されます。これはうまく機能しますが、製品(getJsonConfig()
オブジェクトが保存したデータ)に対して選択されたオプションだけでなく、属性のすべてのオプションを返します。したがって、attribute_data_xxx
オブジェクトをに対してテストspConfig
し、一意の一致オプションをコントローラースクリプトに送信します。
getJsonConfig
属性URLを取得するために拡張すると、おそらく同様に機能します...
いずれにせよ、ここでの重要なポイントは、画像のURLを(製品ではなく)属性オプション自体に関連付けることでした。
乾杯