2011-12-15 146 views
0

我有一個銷售雜誌訂閱的Magento網站,大約有1000種不同的標籤。我想要的是創建一個非常簡單的下拉菜單,在首頁上預先填充所有產品。非常像this,只是我似乎無法用'name'(產品名稱)取代​​'製造商'。下載Magento Frontpage顯示所有產品

一個例子可以找到here與不同的網站出售雜誌訂閱以及(右上方,搜索字段左邊)。

有人可以給我們提供一些代碼來創建這樣的下拉列表嗎?

回答

0

看着你的聯繫,下拉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>"; 

如果$productMage::getModel(...)呼叫的結果,那麼到$product->getUrlPath()調用應該返回產品的路徑,as documented here

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> 

它只會變得活躍簡單的產品,但你可以通過添加視產品附加的過濾器屬性值 - > addAttributeToFilter( )功能。

編輯:此外,如果您有很多產品,則需要花費很長時間,尤其是如果您沒有啓用緩存,則需要很長時間。這不是真的推薦。

+0

謝謝! ....但是你是對的,需要很長的時間來加載它們。 但是,當開啓緩存時,它似乎工作得很好。 剩下幾件事: 1.它也會顯示不可見的產品。我添加了,但沒有做這項工作: - > addAttributeToFilter('visibility',array('eq'=>'Catalog,search')) 2.當選擇一個產品時,它不會指引您它。 (它現在只顯示姓名) 3.如何將第一個選擇與文本,如「選擇標題」。 – Tijdschriftenzo 2011-12-16 13:35:27

+0

@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

相關問題