显示所有产品的Magento Frontpage下拉列表

时间:2011-12-15 21:23:59

标签: php javascript magento drop-down-menu product

我有一个销售杂志订阅的Magento网站,大约有1000种不同的标题。我想要的是在首页上创建一个非常简单的下拉菜单,其中预装了所有产品。非常像this,只是我似乎无法用'name'(产品名称)取代​​'制造商'。

可以找到一个示例here,其中有一个不同的网站也在销售杂志订阅(右上角,左边是搜索字段)。

有人可以向我们提供一些代码来创建这样的下拉列表吗?

2 个答案:

答案 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>";

如果调用$productMage::getModel(...)$product->getUrlPath(),则对{{1}}的调用应返回产品的路径as documented here