如何获取Magento中可配置项目的URL?

时间:2009-08-22 09:07:54

标签: php url magento

我正在使用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&amp; qty = 1&amp; super_attribute [496]将商品添加到购物车= 4

然而,我希望用户预览他们将收到的物品,而不是将其倾倒入购物车。

1 个答案:

答案 0 :(得分:4)

如果不对Magento进行更改,就无法做到这一点。

现在假设您想要在网址中预定义选择框的选定选项:

首先,您需要覆盖块 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>

接下来添加 YourCompany_YourModuleName_Product_View_Options_Type_Select 类,需要扩展 Mage_Catalog_Block_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时出现问题。

我希望我能提供帮助。