3

私はmagentoを使用して製品ファインダーを作成しています。構成可能なアイテムの例にリンクする方法はありますか: mystore.com/bedding-sheets

友人に 250*250cm のシーツへのリンクを送りたいとしましょ

<dl class="last">
    <dt><label>Size<span class="required"> *</span></label></dt>
     <dd class="last">
     <select class="required-entry super-attribute-select" id="attribute496" name="super_attribute[496]">
      <option value="">Choose option...</option>
      <option value="4">200*200cm</option>
      <option value="3">200*230cm</option>
      <option value="2">200*250cm</option>
      <option value="1">250*250cm</option></select>
    </dd>
</dl>

そのようなリンクを作成できるかどうか知っている人はいますか?

編集: /checkout/cart/add?product=47&qty=1&super_attribute[496]=4を使用して、カートにアイテムを追加する方法を見つけることができました

ただし、カートに入れるだけでなく、受け取るアイテムのプレビューをユーザーに表示してもらいたいです。

4

1 に答える 1

4

Magento に変更を加えずにこれを行うことはできません。

ここで、選択ボックスの選択されたオプションを URL で事前に定義したいとします。

まず、ブロックMage_Catalog_Block_Product_View_Options_Type_Selectを上書きする必要があります。(私はあなたがすでに独自のモジュールを作成していると仮定しています - 私はあなたがそれをしていないので、私に知らせてください)

これを行うには、次のエントリを config.xml に追加する必要があります。

<config>
    <global>
        <blocks>
            <catalog>
                <rewrite>
                    <product_view_options_type_select>YourCompany_YourModuleName_Product_View_Options_Type_Select</product_view_options_type_select>
                </rewrite>
            </catalog>
        </blocks>
    </global>
</config>

次に、 Mage_Catalog_Block_Product_View_Options_Type_Select を拡張する必要があるクラスYourCompany_YourModuleName_Product_View_Options_Type_Select追加します。

このクラスでは、関数getValuesHtml()を上書きする必要があります。まず、拡張するクラスからコピーする必要があります。

この関数では、これを見つける必要がありますforeach

    foreach ($_option->getValues() as $_value) {
        $priceStr = $this->_formatPrice(array(
            'is_percent' => ($_value->getPriceType() == 'percent') ? true : false,
            'pricing_value' => $_value->getPrice(true)
        ), false);
        $select->addOption(
            $_value->getOptionTypeId(),
            $_value->getTitle() . ' ' . $priceStr . ''
        );
    }

この後、次を追加します。

$standardValue = $this->getRequest()->getParam($_option->getid());
//Mage::log("Option Name: "$_option->getid());
$select->setValue($standardValue);

これでうまくいくはずです。残念ながら、現在これをテストすることはできません。ですから、困ったことがあれば教えてください。

$_option->getid()がパラメーターの正しい名前であるかどうかはわかりません。しかし、上記のコード リストでコメントアウトした 1 行にコメントを付けていただければ、それを見つけることができます。Magento のインストールで、URL パラメーターの名前が表示されるファイルvar/log/system.logを開きます。

URL パラメーターに名前を付ける方法がわかったので、まさに希望通りのことができます: url/to/product?option_id=value_id

PS: Magento コアで直接変更するのではなく、新しいクラスを作成する理由を自問してみてください: これは、Magento の新しいバージョンに更新する際の問題を防ぐためです。

お役に立てれば幸いです。

于 2009-08-25T21:32:01.180 に答える