我有一个销售杂志订阅的Magento网站,大约有1000种不同的标题。我想要的是在首页上创建一个非常简单的下拉菜单,其中预装了所有产品。非常像this,只是我似乎无法用'name'(产品名称)取代'制造商'。
可以找到一个示例here,其中有一个不同的网站也在销售杂志订阅(右上角,左边是搜索字段)。
有人可以向我们提供一些代码来创建这样的下拉列表吗?
答案 0 :(得分:0)
尝试将其放在您想要下拉列表的模板文件中:
<select>
<?php
$products = Mage::getResourceModel('catalog/product_collection')
->setStore(Mage::app()->getStore()->getId())
->addAttributeToFilter('status', array('eq' => '1'))
->addAttributeToFilter('type_id', array('eq' => 'simple'));
foreach ($products as $prod_model) {
$product = Mage::getModel('catalog/product')->load($prod_model->getId());
echo "<option value=\"".$product->getId()."\">".$product->getName()."</option>";
}
?>
</select>
它只会获得活跃的简单产品,但您可以使用 - &gt; addAttributeToFilter()函数根据产品属性值添加其他过滤器。
编辑:此外,如果您拥有大量产品,则需要很长时间才能处理,特别是如果您没有启用缓存,则需要很长时间。这并不是真的值得推荐的。答案 1 :(得分:0)
查看您链接到的其他网站,下拉HTML看起来像这样,在onselect
属性中有一小段JavaScript导航到所选产品的网址:
<select ... onchange="window.location.href = this.value">
<option>Select a product</option>
<option value="/path-to-foo">Foo</option>
<option value="/path-to-bar">Bar</option>
</select>
JavaScript通过将window.location.href
设置为新网址进行导航,并从this.value
获取此网址,该网址是所选<option>
的值。
要在Magento中渲染这样的下拉列表,首先必须使用Mike Bywaters' code(通过visible和whatnot过滤)获取所有产品。然后,您循环浏览所有产品,并使用正确的值为echo
<option>
标记每个产品:
echo "<option value=\"/" . $product->getUrlPath() . "\">";
echo $product->getName();
echo "</option>";
如果调用$product
后Mage::getModel(...)
为$product->getUrlPath()
,则对{{1}}的调用应返回产品的路径as documented here。