ক্যাটালগ পণ্য তালিকার শেষে [বন্ধ] স্টক পণ্যগুলির বাইরে চলে যান


14

ক্যাটালগ তালিকার শেষে আমার স্টক পণ্যগুলি ধাক্কা দেওয়া দরকার

দয়া করে এই সমস্যাটি কীভাবে সমাধান করবেন, বা ফাইলটি খনন করতে আমাকে গাইড করুন

এখনও অবধি খুঁজে পেয়েছি Toolbar.phpএবং এর আশেপাশে কাজ করছি



1
এটি পরীক্ষা করে দেখুন অজিত-techhub.blogspot.in/2012/01/…
পবন কুমার

1
আমি ম্যাজেন্টোতে নতুন, তাই প্রশ্ন, / অ্যাপ / কোড / কোর / ম্যাজ / গুগল্যাটাল / মডেল / রিসোর্স / ইভ / মাইসকিএল 4/ প্রোডাক্ট / কালেকশন.এফপি - এই ফাইলটি খালি, ঠিক আছে?
আলেকজান্ডার সোপকভ

আমি হাত ফাইল জানি না, কিন্তু আমি মনে করি আপনি এটি যেখানে Magento পণ্য সংগ্রহ তৈরী করে এবং তারপর মত কেমন ফিল্টার যোগ চাইবেন stackoverflow.com/questions/4803495/...
kevando

3
আমি এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করতে ভোট দিচ্ছি কারণ গ্রহণযোগ্য উত্তর ছাড়াই খুব পুরানো
এসআর_ম্যাজেন্টো

উত্তর:


11

সমাধান ঘ

এটি স্টক পণ্যগুলির বাইরে পৃষ্ঠার তালিকার শেষের দিকে চলে যায়, পুরো পৃষ্ঠাগুলি জুড়ে নয়:

1. ইভেন্ট পর্যবেক্ষক যুক্ত করুন:

<frontend>
    <events>
        <catalog_block_product_list_collection>
            <observers>
                <ssd_test>
                    <type>model</type>
                    <class>ssd_test/observer</class>
                    <method>catalogBlockProductCollectionBeforeToHtml</method>
                </ssd_test>
            </observers>
        </catalog_block_product_list_collection>
    </events>
</frontend>

2. অবজারভার যুক্তি:

public function catalogBlockProductCollectionBeforeToHtml($observer)
{
    /**
     * @var $products Varien_Data_Collection
     */
    $products         = $observer->getEvent()->getCollection();
    $soldOuts         = array();
    if ($products instanceof Varien_Data_Collection) {
        foreach ($products as $product) {
            if (!$product->isSaleable()) {
                $products->removeItemByKey($product->getId());
                $soldOuts[] = $product;
            }
        }
        foreach ($soldOuts as $product) {
            $products->addItem($product);
        }
    }
    return $this;
}

3. " Display Out of Stock Products" থেকে " Yes" সেট করুন System->Configuration->Inventory

সমাধান 2

এটি স্টক পণ্যগুলি থেকে সমস্ত পৃষ্ঠার উপরে তালিকাটির শেষের দিকে চলে যায়:

config.xml:

    <frontend>
        <events>
            <catalog_product_collection_load_before>
                <observers>
                    <review>
                        <type>model</type>
                        <class>ssd_test/observer</class>
                        <method>catalogProductCollectionLoadBefore</method>
                    </review>
                </observers>
            </catalog_product_collection_load_before>
        </events>
    </frontend>

Observer.php:

    public function catalogProductCollectionLoadBefore($observer)
    {
        $toolbar = Mage::getBlockSingleton('catalog/product_list_toolbar');
        if ($toolbar) {
            $products = $observer->getEvent()->getCollection();

            $stockId = Mage_CatalogInventory_Model_Stock::DEFAULT_STOCK_ID;
            $websiteId = Mage::app()->getStore($products->getStoreId())->getWebsiteId();

            $products->getSelect()->joinLeft(
                array('_inv' => $products->getResource()->getTable('cataloginventory/stock_status')),
                "_inv.product_id = e.entity_id and _inv.website_id=$websiteId and _inv.stock_id=$stockId",
                array('stock_status')
            );
            $products->addExpressionAttributeToSelect('in_stock', 'IFNULL(_inv.stock_status,0)', array());

            $products->getSelect()->reset('order');
            $products->getSelect()->order('in_stock DESC');

            if ($toolbar->getCurrentOrder()) {
                $products->addAttributeToSort($toolbar->getCurrentOrder(), $toolbar->getCurrentDirection());
            }
        }

        return $this;
    }

সেট করুন " Display Out of Stock Products" থেকে " Yes" এ System->Configuration->Inventory

উপরের লজিস্টিকগুলি আপনার ক্যাটালগ বাছাই / পৃষ্ঠাগুলির কার্যকারিতাতে প্রভাব ফেলবে না, কেবলমাত্র বিক্রয়যোগ্য পণ্যগুলি শেষ পর্যন্ত সরানো হবে না।


আপনি কি নিশ্চিত যে এটি কাজ করবে? এটি seams এটি পৃষ্ঠাগুলি প্রভাবিত করবে না, কিন্তু এটি নীচে বর্তমান পৃষ্ঠা থেকে স্টক পণ্য আউট সরানো হবে। সুতরাং আপনি যদি পূর্বের পৃষ্ঠায় যান তবে আপনি পূর্ববর্তী পৃষ্ঠায় স্টকগুলির বাইরে কিছু দেখার পরে স্টক পণ্যগুলিতে দেখতে পাবেন।
মারিয়াস

হ্যাঁ এটি স্টক পণ্যগুলির বাইরে
পৃষ্ঠাগুলির

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

হ্যাঁ, আমি আরও একটি সমাধান দেওয়ার চেষ্টা করব :)
mageUz

1
সলিউশন 2 একটি মোহন মত কাজ করে! এর জন্য আপনাকে অনেক ধন্যবাদ!
ডেরিক নেল

0

আমি আমার ওয়েবসাইটে এই কার্যকারিতা বাস্তবায়ন করেছি।

  • সংগ্রহ / পিএপিপি / কোড / কোর / ম্যাজ / চ্যাটালগ / মডেল / রিসোর্স / প্রোডাক্ট / কালেকশন.এফপি থেকে অ্যাপ্লিকেশন / কোড / স্থানীয় / ম্যাগেজ / ক্যাটালগ / মডেল / রিসোর্স / পণ্য /

  • সংগ্রহ.এফপি সম্পাদনা করুন, প্রায় 1570 লাইনের পাঠ্য $ storeId = $ এটি-> getStoreId () সন্ধান করুন;

  • নিম্নলিখিত লাইনগুলি সরাসরি প্রশংসনীয় যুক্ত করুন:

        $this->getSelect()->joinLeft(
        array('_inventory_table'=>$this->getTable('cataloginventory/stock_item')),
        "_inventory_table.product_id = e.entity_id",
        array('is_in_stock', 'manage_stock')
    );
    $this->addExpressionAttributeToSelect('on_top',
    '(CASE WHEN (((_inventory_table.use_config_manage_stock = 1) AND (_inventory_table.is_in_stock = 1)) OR  ((_inventory_table.use_config_manage_stock = 0) AND (1 - _inventory_table.manage_stock + _inventory_table.is_in_stock >= 1))) THEN 1 ELSE 0 END)',
     array());
    $this->getSelect()->order('on_top DESC');

আপনার ক্যাশে ফ্লাশ করুন এবং আপনার পণ্যগুলি প্রথমে স্টক পণ্যগুলিকে স্বয়ংক্রিয়ভাবে প্রথমে এবং শেষের স্টক পণ্যগুলির আউট সারণ করবে।


3
স্থানীয় কোর ওভাররাইডগুলির পরামর্শ দেওয়া থেকে বিরত থাকুন। ম্যাজ_গ্লাগল_মোডেল_ রিসোর্স_প্রোডাক্ট_ক্লোকশন ক্লাসটি যথাযথভাবে বাড়িয়ে তোলা আরও ভাল।
রিড ব্লোমকুইস্ট

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