পৃষ্ঠাসমূহ এবং বাছাই কাজ করছে না


10

আমার কাস্টম মডিউলটির জন্য আমি প্রস্তুতকারকের দ্বারা পণ্য পেয়েছি। টেমপ্লেটের জন্য আমি অনুলিপি করেছি list.phtml

টেমপ্লেটে ফাইল পৃষ্ঠাতে প্রদর্শিত হয় তবে এটি প্রতি পৃষ্ঠায় নির্বাচিত সীমা পরিবর্তে সমস্ত পণ্য দেখায়। বাছাই খুব কাজ করছে না।

আমি কীভাবে এটি কাজ করতে পারি ??

এটি আমার ব্লক ফাইল:

protected function _getProductCollection() 
{
    if (is_null($this->_productCollection)) {
        $layer = $this->getLayer();
        $brand_id = $this->getRequest()->getParam('id');
        $collection = Mage::getModel('catalog/product')->getCollection();
        $collection->addAttributeToSelect('*');
        $collection->addFieldToFilter(array(
            array('attribute' => 'manufacturer', 'eq' => $brand_id)
        ));
    }

    return $collection;
}

উত্তর:


2

পৃষ্ঠাগুলি যোগ করতে এবং আপনার পছন্দসই সংগ্রহটিতে বাছাই করতে নীচে স্নিপেট ব্যবহার করুন। প্রতিটি কাস্টম সংগ্রহের তালিকার জন্য আপনাকে কাস্টম টুলবার পেজারও তৈরি করতে হবে।

    $itemsLimit         =   $_GET["limit"] ? $_GET["limit"] : Mage::getStoreConfig('catalog/frontend/grid_per_page');   //Set items to show per page
    $currPage               =   $_GET["p"] ? $_GET["p"] : 1;                //Set current page      
   /*   Set Pagination for Custom Loaded Collection */                              
    $toolbar = Mage::getBlockSingleton('catalog/product_list')->getToolbarBlock();
    $toolbar->setCollection($_productCollection);

    /*  Set Pager   */
    $pager = $this->getLayout()->createBlock('page/html_pager', 'custom.pager');
    $pager->setAvailableLimit(array($itemsLimit=>$itemsLimit));
    $pager->setCollection($_productCollection);
    $toolbar->setChild('product_list_toolbar_pager', $pager);
    $toolbar->setData('_current_limit', $itemsLimit);

এর পরে, প্রতিস্থাপন করুন

$this->getToolbarHtml(); by $toolbar->toHtml(); 

নীচের পেজার এবং শীর্ষ বাছাই সরঞ্জামদণ্ড প্রদর্শন করতে।

ক্রম বাছাইয়ের জন্য, সংগ্রহের লোডের আগে এটি করুন:

$_productCollection->addAttributeToSort($_GET["order"], $_GET["dir"]');

আমি আশা করি এটি আপনার সমস্যার সমাধান করে।


এছাড়াও আপনি $ _ প্রোডাক্ট কালেকশন-> সেটপেজসাইজ ($ আইটেমলিমেট) -> সেটরপেজ (r কার্পেজ) যোগ করতে পারেন;
আহসান হোরানী

1

আপনাকে নিম্নলিখিত ফিল্টারগুলিও ব্যবহার করতে হবে:

    ->addAttributeToSort($_GET['order'],$_GET['dir'] )
    ->setPageSize($limit)
    ->setCurPage($_GET['p'])

সুতরাং আপনার সম্পূর্ণ কোড হয়ে যায়:

    protected function _getProductCollection() 
    {
        if (is_null($this->_productCollection)) 
        {
            $layer = $this->getLayer();
            $brand_id = $this->getRequest()->getParam('id');
            $collection = Mage::getModel('catalog/product')->getCollection();
            $collection->addAttributeToSelect('*');
            $collection->addFieldToFilter(array(array('attribute'=>'manufacturer','eq'=>$brand_id),
    ))
$collection->addAttributeToSort($_GET['order'],$_GET['dir'] );
    $collection->setPageSize($_GET['limit']);
    $collection->setCurPage($_GET['p']);



        }

        return $collection;
    }

1

এটি আপনার ক্ষেত্রে পরিস্থিতি নাও হতে পারে তবে এটির সমস্যা হতে পারে এমন কাউকে সাহায্য করতে পারে। কাস্টম পরিবর্তনগুলি পরীক্ষা করার সময় আমার এই সমস্যা হয়েছিল getProductCollection()

আমি লগিং কোডটি মুছে ফেলার মাধ্যমে এটি সংশোধন করতে সক্ষম হয়েছি যা প্রত্যাবর্তিত সংগ্রহের গণনা উল্লেখ করেছে। আমি বিশ্বাস করি যে getProductCollection()পদ্ধতিতে সংগ্রহের লোডের ফলাফলগুলি জিজ্ঞাসাবাদ করে যে কোনও কিছুই সংগ্রহকে প্রকৃতপক্ষে অস্থায়ীভাবে তার পণ্যগুলি লোড করতে বাধ্য করবে এবং সংগ্রহের আদেশে ডাউন স্ট্রিম পরিবর্তনগুলি এবং পেজিং নিয়ন্ত্রণের জন্য ফলসীমা সীমাবদ্ধকরণকে আটকাবে।


1
সংগ্রহ আইটেম লোড না করে এখনও সংগ্রহ গণনা লগ করতে সক্ষম হতে, ব্যবহার করুন $collection->getSize()। এটি SELECT COUNT(*)বর্তমান সংগ্রহ ফিল্টারগুলির সাথে পৃথক সম্পাদন করবে ।
জান পেপেনব্রোক

ধন্যবাদ @ জন পাপেনব্রোক। এটা সহজ। বৃহত্তর পয়েন্টটি আমি এখনও অবশেষে তৈরি করার চেষ্টা করছিলাম। আপনি যদি সংগ্রহটি লোড করার কারণ হয়ে থাকেন তবে এটি পেজিং এবং বাছাইয়ের সাথে হস্তক্ষেপ করবে যা সংগ্রহের পরে লোড না হয়ে থাকলে প্রয়োগ করা হয়।
ম্যাট বি

0

আপনাকে ওভাররাইড করতে হবে _prepareLayout()এবং নীচে স্ন্যাপ হিসাবে ডেটা সেট করতে হবে।

protected function _prepareLayout()
{
    parent::_prepareLayout();
    $pager = $this->getLayout()->createBlock('page/html_pager')->setCollection($this->getDatasets());
    $this->setChild('pager', $pager);
    $this->getDatasets()->load();
    return $this;
}

আপনার যদি কোন প্রশ্ন থাকে তবে আমাকে জানান know


এটি এখনও কাজ করে না। এটি যুক্ত করার পরে এটি সাদা পর্দা প্রদর্শন করে।
পিয়ুষ

এটি কেবল অনুলিপি এবং পেস্ট করা বন্ধুকে পছন্দ করবে না
কীউল শাহ

0

বিভাগ বিভাগ পরিচালনা করতে যান এবং সেট "অ্যাঁ" এর অ্যাঙ্কর অপশন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.