hiện tất cả những sản phẩm giảm giá

Thảo luận trong 'Yêu cầu module - chức năng cho Magento' bắt đầu bởi BuiVan Phuc, 28 Tháng năm 2013.

  1. BuiVan Phuc

    BuiVan Phuc New Member

    Cả nhà cho mình hỏi ,Mình dùng code này để hiện các sản phẩm giảm giá. Nhưng hok biết làm sao để sử dụng template list trong product. hix.
    $todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
    $special= Mage::getResourceModel('reports/product_collection')
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('visibility', array('neq'=>1))
    ->addAttributeToFilter('special_price', array('neq'=>''))

    ->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate))
    ->addAttributeToFilter('special_to_date', array('or'=> array(
    0 => array('date' => true, 'from' => $todayDate),
    1 => array('is' => new Zend_Db_Expr('null')))
    ), 'left')
    ->addAttributeToSort('special_from_date', 'desc');

    $special->load();

    Bài viết khác cùng chuyên mục:

  2. sunboy

    sunboy Member

    Code này sẽ không hiển thị sản phẩm giảm giá nếu bạn set thời gian giảm giá chỉ trong vòng 1 ngày hôm nay chẳng hạn, bạn tham khảo code lấy News product và áp dụng vào code của bạn nhé:
    Mã:
    $todayStartOfDayDate  = Mage::app()->getLocale()->date()
                ->setTime('00:00:00')
                ->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
     
            $todayEndOfDayDate  = Mage::app()->getLocale()->date()
                ->setTime('23:59:59')
                ->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
     
            $collection = Mage::getResourceModel('catalog/product_collection');
            $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
     
     
            $collection = $this->_addProductAttributesAndPrices($collection)
                ->addStoreFilter()
                ->addAttributeToFilter('news_from_date', array('or'=> array(
                    0 => array('date' => true, 'to' => $todayEndOfDayDate),
                    1 => array('is' => new Zend_Db_Expr('null')))
                ), 'left')
                ->addAttributeToFilter('news_to_date', array('or'=> array(
                    0 => array('date' => true, 'from' => $todayStartOfDayDate),
                    1 => array('is' => new Zend_Db_Expr('null')))
                ), 'left')
                ->addAttributeToFilter(
                    array(
                        array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')),
                        array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null'))
                        )
                  )
                ->addAttributeToSort('news_from_date', 'desc')
                ->setPageSize($this->getProductsCount())
                ->setCurPage(1)
            ;
    
    Còn về việc sử dụng template của trang listing thì ít nhất bạn phải tạo module riêng (ví dụ như: Special/Product/Block/Special.php) có block Special.php để get collection như trên, sau đó tạo category riêng cho special products và customize layout cho riêng category này ở ngay trong admin và sử dụng lại layout của listing, đại loại như sau:
    Mã:
     
            <reference name="content">
                <block type="Tên module/" name="category.products" template="catalog/category/view.phtml">
                    <block type="special/product_special" name="product_list" template="catalog/product/list.phtml">
                        <block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
                            <block type="page/html_pager" name="product_list_toolbar_pager"/>
                            <!-- The following code shows how to set your own pager increments -->
                            <!--
                                <action method="setDefaultListPerPage"><limit>4</limit></action>
                                <action method="setDefaultGridPerPage"><limit>9</limit></action>
                                <action method="addPagerLimit"><mode>list</mode><limit>2</limit></action>
                                <action method="addPagerLimit"><mode>list</mode><limit>4</limit></action>
                                <action method="addPagerLimit"><mode>list</mode><limit>6</limit></action>
                                <action method="addPagerLimit"><mode>list</mode><limit>8</limit></action>
                                <action method="addPagerLimit" translate="label"><mode>list</mode><limit>all</limit><label>All</label></action>
                            -->
                        </block>
                        <action method="addColumnCountLayoutDepend"><layout>empty</layout><count>6</count></action>
                        <action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>5</count></action>
                        <action method="addColumnCountLayoutDepend"><layout>two_columns_left</layout><count>4</count></action>
                        <action method="addColumnCountLayoutDepend"><layout>two_columns_right</layout><count>4</count></action>
                        <action method="addColumnCountLayoutDepend"><layout>three_columns</layout><count>3</count></action>
                        <action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
                    </block>
                </block>
            </reference>
     
    
    Tất nhiên phần trên chỉ là minh họa thôi, chứ không phải paste vào là chạy ngay đâu nhé :D

Chia sẻ trang này