Пользовательские блоки Magento - PullRequest
7 голосов
/ 24 октября 2010

Я пытаюсь показать список популярных продуктов, используя ajax в magento, на домашней странице, используя ajax, я мог бы сделать это для 5 или «N» no.of продуктов, но я хочу, чтобы панель инструментов пагинации была добавлена ​​с набор результатов.

Это то, что я добавил, чтобы показать популярные продукты,

// Magento layout
$magento_block = Mage::getSingleton('core/layout');
$productsHtml = $magento_block->createBlock('catalog/product');
$productsHtml->setTemplate('catalog/product/popular.phtml');
echo $productsHtml ->toHTML();

А под популярным .phtml

<?php   

    $_productCollection = Mage::getModel('catalog/product')->getCollection()
    ->addPriceData()
    ->addAttributeToSort('ordered_qty', 'DESC')
    ->addAttributeToSort('name', 'ASC')
    ->setPageSize($limit)
    ->setPage($p, $limit)       
    ->addAttributeToSelect(array('entity_id', 'entity_type_id', 'attribute_set_id', 'type_id', 'sku', 'category_ids', 'created_at', 'updated_at','has_options', 'sync', 'name', 'stock_status', 'wc_review_iwc_rating', 'wc_review_wa_rating', 'wc_review_bh_rating', 'small_image', 'status', 'pre_arrival', 'description', 'short_description', 'price', 'is_salable', 'stock_item', 'gift_message_available', 'featured'));

?>

Итак, это дает мне популярные продукты с указанной страницей и лимитом, но я не могу загрузить панель инструментов разбивки на страницы (путем непосредственного добавления панели инструментов в Popular.phtml или с помощью функции создания блочного макета), где я неправильно? Может кто-нибудь сказать мне, пожалуйста.

Спасибо

Ответы [ 3 ]

10 голосов
/ 24 октября 2010

Попробуйте создать блок Mage_Catalog_Block_Product_List и самостоятельно настроить коллекцию популярных продуктов.

$collection = Mage::getModel('catalog/product')->addAttributeToFilter('your popular products');
// do not load the collection yet, otherwise the toolbar will not work

$listBlock = Mage::getSingleton('core/layout')->createBlock('catalog/product_list');
$listBlock->setCollection($collection)->setTemplate('your/alternative/catalog/product/list.phtml');

Блок списка продуктов всегда инициализирует сам блок панели инструментов. Вы можете отобразить панель инструментов в шаблоне, используя <? Php echo $ this-> getToolbarHtml ()?>

EDIT: Вот рабочий пример примера действия внешнего интерфейса в Magento 1.4.1.1:

.
public function productListAction()
{

    $collection = Mage::getModel('catalog/product')->getCollection()
            ->addAttributeToSelect('*');

    Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);

    $this->loadLayout();

    $listBlock = $this->getLayout()->createBlock('catalog/product_list')
            ->setTemplate('catalog/product/list.phtml')
            ->setCollection($collection);

    $this->getLayout()->getBlock('content')->append($listBlock);

    $this->renderLayout();
}

Надеюсь, это прояснит ситуацию.

4 голосов
/ 26 октября 2010

Для справки других, это то, что я добавил в соответствии с кодом Vinai.

$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*');
    Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);       
    $magento_block = Mage::getSingleton('core/layout');
    $productsHtml  = $magento_block->createBlock('catalog/product_list');
    $productsHtml ->setTemplate('catalog/product/list.phtml')->setCollection($collection);
    echo $productsHtml ->toHTML();

Прекрасно отображает панель инструментов для разбивки на страницы.

2 голосов
/ 24 октября 2010

Полагаю, вам следует инициализировать панель инструментов из вашей коллекции.Вы видели эту страницу ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...