2010-11-11 140 views
0

嗨 我已將20種產品分配到一個名爲Phone的類別,我想創建一個模塊來檢索這些產品並以列表格式顯示。有人能告訴我如何做到這一點?Magento 1.4 - 顯示某些特定類別下的產品

謝謝

+0

沒有嘗試過,我只是找到了開發自定義模塊 – 2010-11-13 00:56:36

回答

1

無需創建模塊。只需將它放置在佈局中的一個塊中即可:它將顯示鏈接到指定類別的所有產品(ID = XXX)。

<!-- Show all products linked to this category --> 
<block type="catalog/product_list" name="best_sellers" template="catalog/product/list.phtml"> 
    <action method="setCategoryId"> 
     <category_id>XXX</category_id> 
    </action> 
</block> 

更新:

您可以創建在此改變「Mage_Catalog_Block_Product_List」模塊,並添加一個方法來限制一定數量的產品。

1-創建 「應用程序/代碼/本地/ [命名空間] /Catalog/etc/config.xml」,並把這個在它:

<config> 
    <modules> 
     <[Namespace]_Catalog> 
      <version>0.1.0</version> 
     </[Namespace]_Catalog> 
    </modules> 

    <global> 

     <blocks> 
      <catalog> 
       <rewrite> 
        <product_list>[Namespace]_Catalog_Block_Product_List</product_list> 
       </rewrite> 
      </catalog> 
     </blocks> 

    </global> 
</config> 

2-替代阻止通過創建類:「應用程序/代碼/本地/ [命名空間] /Catalog/Block/Product/List.php 「

class [Namespace]_Catalog_Block_Product_List extends Mage_Catalog_Block_Product_List 
{ 
    /** 
    * Default number of product to show. 
    * 
    * @var int default = 5 
    */ 
    private $_productCount = 5; 

    /** 
    * Initialize the number of product to show. 
    * 
    * @param int $count 
    * @return Mage_Catalog_Block_Product_List 
    */ 
    public function setProductCount($count) 
    { 
     $this->_productCount = intval($count); 

     return $this; 
    } 


    /** 
    * Get the number of product to show. 
    * 
    * @return int 
    */ 
    public function getProductCount() 
    { 
     return $this->_productCount; 
    } 
} 

3-超越控制你的主題添加的產品限制功能:

複製」 應用程序/設計/前端/default/default/template/catalog/product/list.phtml「到」應用程序/設計/前端/預設/ [your_theme] /template/catalog/product/list.phtml」

// Insert between the foreachs and <li> for the list mode and grid mode 
<?php if($_iterator < $this->getProductCount()) : ?> 
... 
// Insert between the foreachs and <li> for the list mode and grid mode 
<?php endif; ?> 

4-在主頁內容選項卡,加入這一行,你想讓它:

// category_id = Procucts linked to this category 
// product_count = Maximum number of product 
{{block type="catalog/product_list" category_id="7" product_count="3" template="catalog/product/list.phtml"}} 

希望這可以幫助別人。

+0

的指導,但我想在一個特定的部分以顯示在主頁上的產品,而不是在左/右列,還我只是想不顯示10種產品全部,謝謝 – 2010-11-12 09:16:27

+0

我在Mage_Catalog_Block_Product_List上添加了一個基本模塊。它使您能夠顯示最大數量的產品。如果缺少某些東西,請告訴我們,這樣每個人都可以從中獲益。 – yvoyer 2010-11-15 17:24:06

1

要創建一個使用類做一些事情,通過創建一個標準模塊結構開始小部件(你可以通過CMS插入): /砌塊 /等 /助手 /型號

請注意,在我的代碼示例和文件名下面,您需要用您想要使用的適當名稱空間和模塊替換[Namespace],[Module]和[module]。案例很重要!

通過創建應用程序/代碼/本地/ [命名空間]/[模塊] /etc/config.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
    <[Namespace]_[Module]> 
     <version>0.0.1</version> 
    </[Namespace]_[Module]> 
    </modules> 
    <global> 
    <helpers> 
     <[module]> 
     <class>[Namespace]_[Module]_Helper</class> 
     </[module]> 
    </helpers> 
    <blocks> 
     <[module]> 
     <class>[Namespace]_[Module]_Block</class> 
     </[module]> 
    </blocks> 
    <models> 
     <[module]> 
     <class>[Namespace]_[Module]_Model</class> 
     </[module]> 
    </models> 
    </global> 
</config> 

然後創建一個應用程序/代碼/本地/ [命名空間]開始/ [模塊] /等/ widget.xml此部件包括一個被稱爲 「selected_category」

<?xml version="1.0"?> 
<widgets> 
    <[module]_category type="[module]/category"> 
    <name>[Module]: Category</name> 
    <description type="desc">Adds a [module] for a category.</description> 
    <parameters> 
     <selected_category> 
     <label>Categories</label> 
     <visible>1</visible> 
     <required>1</required> 
     <type>select</type> 
     <source_model>[module]/catopt</source_model> 
     </selected_category> 
    </parameters> 
    </[module]_category> 
</widgets> 

然後,在應用程序/代碼/本地/ [命名空間]強制性助手文件設置/ [模塊] /Helper/Data.php

<?php 
    class [Namespace]_[Module]_Helper_Data extends Mage_Core_Helper_Abstract 
    { 
    } 

然後是允許用戶在小部件對話框中選擇類別的模型。這應用於app/code/local/[Namespace]/[Module]/Model/Catopt。PHP

<?php 
class [Namespace]_[Module]_Model_Catopt 
{ 
    public function toOptionArray() 
    { 
     $category = Mage::getModel('catalog/category'); 
     $tree = $category->getTreeModel(); 
     $tree->load(); 
     $ids = $tree->getCollection()->getAllIds(); 
     $arr = array(); 
     if ($ids){ 
      foreach ($ids as $id){ 
      $cat = Mage::getModel('catalog/category'); 
      $cat->load($id); 
      array_push($arr, array('value' => $id, 'label' => $cat->getName().' ('.$cat->getProductCount().')')); 
      } 
     } 
     uasort($arr, array($this, 'labelsort')); 
     return $arr; 
    } 

    function labelsort($a, $b){ 
     if ($a['label'] == $b['label']) 
        return 0; 
       else if ($a['label'] < $b['label']) 
        return -1; 
       else 
        return 1; 
    } 
} 

最後對事物的模塊側它出現在應用程序/代碼/本地/ [命名空間]的方框/ [模塊] /Block/Category.php此塊使用自定義的一個.phtml文件爲它的顯示,但是您可以通過更改塊的類型並將其輸入到setTemplate來更改它以使用其他任何可能需要顯示的內容。

<?php 
class [Namespace]_[Module]_Block_Category 
    extends Mage_Core_Block_Template 
    implements Mage_Widget_Block_Interface 
{ 

     /** 
     * A model to serialize attributes 
     * @var Varien_Object 
     */ 
     protected $_serializer = null; 

     /** 
     * Initialization 
     */ 
     protected function _construct() 
     { 
      $this->_serializer = new Varien_Object(); 
      $this->setTemplate('[module]/[module].phtml'); 
      parent::_construct(); 
     } 

     public function getCategory(){ 
      return $this->getData('selected_category'); 
     } 
} 

不要忘記添加一個模塊的安裝文件/app/etc/modules/[Namespace]_[Module].xml下這樣

<?xml version="1.0"?> 
<config> 
    <modules> 
     <[Namespace]_[Module]> 
      <active>true</active> 
      <codePool>local</codePool> 
      <depends> 
       <Mage_Cms /> 
      </depends> 
     </[Namespace]_[Module]> 
    </modules> 
</config> 

最後,你需要創建一個模板文件來顯示塊內容。這將在/app/design/frontend/default/default/template/[module]/[module].phtml

這個.phtml文件可以使用$ this-> getCategory()來獲得類別並從那裏。您可以輕鬆地自定義這些示例中包含的塊,以顯示默認的magento產品列表網格,而不是使用自定義的.phtml文件。

0

感謝您的信息發佈。對於那些不太流利的PHP,但由於您正在尋找解決方案來顯示來自給定類別的產品名稱列表的人,我設法通過簡單地修改其他人的模板文件來找到解決方案。對於這個解決方案,我發現最適合的延長是:

http://www.cubewebsites.com/blog/magento/extensions/freebie-magento-featured-products-widget-version-2/

(在github最新版本:https://github.com/cubewebsites/Cube-Category-Featured-Products/tags)。

登錄和註銷並清除緩存我能到窗口小部件插入到一個靜態塊和修改用於生產,我想自定義視圖中的一個.phtml文件之後。

小部件看起來像這樣插入時:

{{widget type="categoryfeatured/list" template="categoryfeatured/block.phtml" categories="118" num_products="10" products_per_row="1" product_type="all"}}. 

我只是開

應用程序/設計/前端/基/默認/模板/ categoryfeatured/block.phtml

複製它的內容並創建了category_product_listing.phtml

一個新的一個.phtml文件,然後指着小部件實例到新的一個.phtml文件,如下所示:

{{widget type="categoryfeatured/list" template="categoryfeatured/category_product_listing.phtml" categories="118" num_products="10" products_per_row="1" product_type="all"}}. 

然後我通過我的PHP的基本理解這一個.phtml文件去和刪除圖像等所有項目,添加到購物車按鈕,評論,等等,直到我與只是基本的連接產品稱號離開以及因爲類別標題保持不變。

我希望這可以幫助別人,因爲我花了數小時試圖弄清楚這一點。

相關問題