我有一個銷售雜誌訂閱的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