Bài viết hướng dẫn tạo danh sách sản phẩm tiêu biểu trong Magento

Last modified by Mr.Hai on Mon, February 1, 2010 20:49
Source|Old Revisions  |  Back To Group
  

Hướng dẫn này sẽ cho bạn thấy làm thế nào để hiển thi6 một sản phẩm tiêu biểu (đặc trưng). Các sản phẩm đặc trưng là một sản phẩm có một thuộc tính được thêm vào trong phần quản trị.

Tôi sẽ giải thích về mỗi bước đi để làm việc tùy chỉnh tính năng này được nhanh chóng.

Bước 1) Tạo thuộc tính "Featured"

Bằng cách vào: Catalog > Attributes > Manage Attributes > Add New Attribute.

Thông tin thuộc tính

  • Attribute Identifier: featured
  • Scope: Store View
  • Catalog Input Type for Store Owner: Yes/No
  • Unique Value (not shared with other products): No
  • Values Required: No
  • Input Validation for Store Owner: None
  • Apply To: All Product Types

Front End Properties

  • Use in quick search: No
  • Use in advanced search: Yes
  • Comparable on Front-end: No
  • Use In Layered Navigation (Can be used only with catalog input type ‘Dropdown’): No
  • Visible on Catalog Pages on Front-end: Yes

Manage Label/Options

  • Default: Featured Product
  • English: Featured Product

Lưu thuộc tính lại vào vào Catalog → Attributes → Manage Attributes Để thêm thuộc tính vừa tạo vào nhóm thuộc tính bạn cận làm.


Bước 2) Thêm Block vào catalog.xml

Bạn mở file theo đường dẫn: /app/design/frontend/default/default/layout/catalog.xml.Tôi muốn thêm một <block> ở phía trên của block product_list Thêm đoạn mã sau vào line 108 (bên trong thẻ <catalog_category_layered> trong file catalog.xml).

  1.     <block type="catalog/product_featured" name="product_featured" as="product_featured" template="catalog/product/featured.phtml"></block>

Bước 3) Code file Featured.php

Create a new file, and directories: app/code/local/MyCompany/Catalog/Block/Product/Featured.php

  1. <?php
  2. class MyCompany_Catalog_Block_Product_Featured extends Mage_Catalog_Block_Product_Abstract
  3. {
  4.     public function getFeaturedProduct()
  5.     {
  6.         // instantiate database connection object
  7.         $categoryId = $this->getRequest()->getParam('id', false);
  8.         $resource = Mage::getSingleton('core/resource');
  9.         $read = $resource->getConnection('catalog_read');
  10.         $categoryProductTable = $resource->getTableName('catalog/category_product');
  11.         //$productEntityIntTable = $resource->getTableName('catalog/product_entity_int'); // doesn't work :(
  12.         $productEntityIntTable = (string)Mage::getConfig()->getTablePrefix() . 'catalog_product_entity_int';
  13.         $eavAttributeTable = $resource->getTableName('eav/attribute');
  14.    
  15.         // Query database for featured product
  16.         $select = $read->select()
  17.                        ->from(array('cp'=>$categoryProductTable))
  18.                        ->join(array('pei'=>$productEntityIntTable), 'pei.entity_id=cp.product_id', array())
  19.                        ->joinNatural(array('ea'=>$eavAttributeTable))
  20.                        ->where('cp.category_id=?', $categoryId)
  21.                        ->where('pei.value=1')
  22.                        ->where('ea.attribute_code="featured"');
  23.        
  24.         $row = $read->fetchRow($select);
  25.         return Mage::getModel('catalog/product')->load($row['product_id']);
  26.     }
  27. }
  28. ?>

Bước 4) Mage_Catalog_Block_Category_View

Tạo file mới app/code/local/MyCompany/Catalog/Block/Category/View.php.

  1.     class MyCompany_Catalog_Block_Category_View extends Mage_Catalog_Block_Category_View
  2.     {
  3.         public function getFeaturedProductHtml()
  4.         {
  5.             return $this->getBlockHtml('product_featured');
  6.         }
  7.     }

Bước 5) Chỉnh sửa templates

Sửa file app/design/frontend/default/default/template/catalog/category/view.phtml Thêm vào code dưới:

  1.     <?=$this->getFeaturedProductHtml()?>

Ngay trên dòng này:

  1.     <?=$this->getProductListHtml()?>

Tạo app/design/frontend/default/default/template/catalog/product/featured.phtml và thêm đoạn mã sau:

  1. <?php $_product=$this->getFeaturedProduct() ?>
  2. Check this out: <a href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a>

Bước 6) Thêm block mới vào app/etc/local.xml

Thông tin code như sau:

  1.     <blocks>
  2.         <catalog>
  3.             <rewrite>
  4.                 <product_featured>MyCompany_Catalog_Block_Product_Featured</product_featured>
  5.            </rewrite>
  6.             <rewrite>
  7.                 <category_view>MyCompany_Catalog_Block_Category_View</category_view>
  8.             </rewrite>
  9.          </catalog>
  10.     </blocks>

Tôi hy vọng vài dịch này giúp bạn yêu thích magento thêm phần nào hiểu cách thức code của magento

Thanks,

Mr.Hải (www.magentovietnam.com) dịch theo bài viết của Andy




 

Magento 2 GitHub Repository

Magento Job Board - Some sort of tag line goes here

Latest Posts| View all Jobs