3

我正在使用 magento 并创建一个产品查找器。有没有办法可以链接到可配置项目示例:mystore.com/bedding-sheets

假设我想向朋友发送一个指向 250*250cm 的床单的链接,我认为该链接可能是:mystore.com/bedding-sheets?attribute496=1(除非不是这种情况)

<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()是您参数的正确名称。但是,如果您在上面的代码清单中为您注释掉的一行中添加注释,您可以尝试找出这一点。在您的 Magento 安装中,打开文件var/log/system.log,您的 url 参数名称现在应该出现在该文件中。

既然您知道如何命名 url 参数,您就可以完全按照您的意愿行事:url/to/product?option_id=value_id

PS:如果你问自己为什么我们创建一个新类而不是直接在 Magento 核心中更改它:我们这样做是为了防止在更新到新版本的 Magento 时出现问题。

我希望我能帮上忙。

于 2009-08-25T21:32:01.180 回答