我有一个销售杂志订阅的Magento网站,大约有1000种不同的标签。我想要的是创建一个非常简单的下拉菜单,在首页上预先填充所有产品。非常像this,只是我似乎无法用'name'(产品名称)取代'制造商'。下载Magento Frontpage显示所有产品
一个例子可以找到here与不同的网站出售杂志订阅以及(右上方,搜索字段左边)。
有人可以给我们提供一些代码来创建这样的下拉列表吗?
我有一个销售杂志订阅的Magento网站,大约有1000种不同的标签。我想要的是创建一个非常简单的下拉菜单,在首页上预先填充所有产品。非常像this,只是我似乎无法用'name'(产品名称)取代'制造商'。下载Magento Frontpage显示所有产品
一个例子可以找到here与不同的网站出售杂志订阅以及(右上方,搜索字段左边)。
有人可以给我们提供一些代码来创建这样的下拉列表吗?
看着你的联系,下拉HTML看起来像这样,使用JavaScript的一个小片段内onselect
属性的其他网站导航到所选产品的网址:
<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
设置为新的URL,并从this.value
获取此URL,这是所选<option>
的值。
要呈现一个下拉这样在Magento你首先必须得到使用Mike Bywaters' code(可见光和诸如此类的东西过滤)的所有产品。然后你通过所有的产品循环,你echo
的<option>
标记为正确的值的每个产品:
echo "<option value=\"/" . $product->getUrlPath() . "\">";
echo $product->getName();
echo "</option>";
如果$product
是Mage::getModel(...)
呼叫的结果,那么到$product->getUrlPath()
调用应该返回产品的路径,as documented here。
尝试把这个在你想要的下拉模板文件:
<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>
它只会变得活跃简单的产品,但你可以通过添加视产品附加的过滤器属性值 - > addAttributeToFilter( )功能。
编辑:此外,如果您有很多产品,则需要花费很长时间,尤其是如果您没有启用缓存,则需要很长时间。这不是真的推荐。
谢谢! ....但是你是对的,需要很长的时间来加载它们。 但是,当开启缓存时,它似乎工作得很好。 剩下几件事: 1.它也会显示不可见的产品。我添加了,但没有做这项工作: - > addAttributeToFilter('visibility',array('eq'=>'Catalog,search')) 2.当选择一个产品时,它不会指引您它。 (它现在只显示姓名) 3.如何将第一个选择与文本,如“选择标题”。 – Tijdschriftenzo 2011-12-16 13:35:27
@Mike,我建议你看看[`Mage_Catalog_Model_Layer#prepareProductCollection()`](http://docs.magentocommerce.com/Mage_Catalog/Mage_Catalog_Model_Layer.html#prepareProductCollection)来源,它负责'正常'的感觉产品列表,比如这个小宝石,`Mage :: getSingleton('catalog/product_status') - > addVisibleFilterToCollection($ collection);` – clockworkgeek 2011-12-16 15:38:43