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 の新しいバージョンに更新する際の問題を防ぐためです。
お役に立てれば幸いです。