2009-01-18 34 views

Trả lời

7

những gì tôi đã kết thúc làm là trong ứng dụng/thiết kế/frontend/default/THEME_NAME/template/Danh mục hàng/sản phẩm/list_random.phtml

làm một cái gì đó như:

<?php 
$_categories=$this->getCurrentChildCategories(); 

$_category = $this->getCurrentCategory(); 
$subs = $_category->getAllChildren(true); 
$result = array(); 
foreach($subs as $cat_id) { 
    $category = new Mage_Catalog_Model_Category(); 
    $category->load($cat_id); 
    $collection = $category->getProductCollection(); 
    foreach ($collection as $product) { 
     $result[] = $product->getId(); 
    } 

} 
shuffle($result); 
?> 

này sẽ giúp bạn có một mảng của id sản phẩm. Bạn có thể lặp qua chúng và tạo ra sản phẩm một cách nhanh chóng sử dụng:

<?php 
$i=0; 
foreach ($result as $_product_id){ 
    $i++; 
    $_product = new Mage_Catalog_Model_Product(); 
    $_product->load($_product_id); 
    //do something with the product here 
}?> 

sau đó, tạo ra một khối tĩnh trong cms với các nội dung sau đây

{{block type="catalog/navigation" template="catalog/product/list_random.phtml"}} 

Cuối cùng, trong Catalog-> Quản lý phần loại , chọn danh mục, sau đó nhấp vào tab cài đặt hiển thị. Chuyển chế độ hiển thị thành "khối tĩnh và sản phẩm" và sau đó chọn khối của bạn từ danh sách thả xuống.

Và điều đó nên làm điều đó.

+1

chỉ là một lưu ý: các mã trên sẽ nhận được tất cả các sản phẩm từ các loại hiện VÀ phụ. Nó sẽ là khá tầm thường để làm cho nó chỉ là thể loại hiện tại. –

+0

Lưu ý: bạn KHÔNG nên bao gồm "logic phức tạp" trong tệp mẫu. Bạn nên tạo BLOCK bằng phương pháp cụ thể để truy xuất các sản phẩm đã lọc sẽ được sử dụng trong mẫu.Ngoài ra, bạn nên sử dụng phương thức @chapagain hoặc 'Mage_Catalog_Model_Category :: getProductCollection()' về cơ bản giống nhau, nhưng nó cũng thêm bộ lọc STORE VIEW. – xyz

2

Bạn nên khởi tạo mô hình bằng cách gọi Mage::getModel('catalog/product') trong trường hợp này vì sau đó bạn nhận được một đối tượng được định cấu hình, được mở rộng bởi bất kỳ mô-đun được định cấu hình nào.

Nếu bạn làm như vậy new Mage_Catalog_Model_Product() điều này sẽ bỏ qua các mô-đun và bỏ qua API Magento.

18

Đây là đoạn mã để có được sản phẩm từ bất kỳ loại đặc biệt: -

$productCollection = Mage::getResourceModel('catalog/product_collection') 
          ->addCategoryFilter($category); 
20

Bạn về cơ bản tải lên các thể loại, có được bộ sưu tập sản phẩm và sau đó lọc một cách thích hợp.

$products = Mage::getModel('catalog/category')->load($category_id) 
->getProductCollection() 
->addAttributeToSelect('*') 
->addAttributeToFilter('status', 1) 
->addAttributeToFilter('visibility', 4) 
->addAttributeToFilter('special_price', array('neq' => "")) 
->setOrder('price', 'ASC') 
; 
+1

Có lẽ giải pháp tốt nhất ở đây, tuy nhiên nó sẽ tốt hơn nếu bạn sẽ bao gồm câu trả lời đầy đủ ở đây với mã. Chỉ trong trường hợp URL ngừng hoạt động. – todd

+1

Josh: @todd là đúng. đăng câu trả lời của bạn ở đây. –

+0

Giải pháp này có thể hiệu quả hơn khi câu trả lời được chấp nhận vì nó không phải trải qua toàn bộ phạm vi sản phẩm, chỉ những sản phẩm thuộc loại đó. Không tìm thấy liên kết – dayuloli

3
$products = Mage::getModel('catalog/category')->load(category_id); //put your category id here 
     $productslist = $products->getProductCollection()->addAttributeToSelect('*'); 
     foreach($productslist as $product) 
     { 
     echo 'price: ' . $product->getPrice() . '<br/>'; 
     } 

Đây là bởi đến nay các mã thuận tiện để lấy chi tiết sản phẩm của category.Hope perticular nó giúp bạn.

0

Mã này sẽ giúp bạn nhận được sản phẩm từ id danh mục 2. Và tại đây cũng sử dụng tệp mẫu list_home.phtml cho danh sách sản phẩm.

echo $this->getLayout()->createBlock("catalog/product_list") 
    ->setCategoryId(2)->setTemplate("catalog/product/list_home.phtml")->toHtml(); 

list_home.phtml

<?php 
$this->getChild('toolbar')->setCurrentMode('list'); //uses list mode 
$_productCollection = $this->getLoadedProductCollection(); 
$_helper = $this->helper('catalog/output'); 
    ?> 

    <?php if (!$_productCollection->count()): ?> 
     <p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p> 
    <?php else: ?> 

--use code for listing--- 
Các vấn đề liên quan