ম্যাজেন্টো 1.9.2.0 স্ট্যাটিক ব্লক প্রদর্শন সমস্যা


77

আমার একাধিক স্ট্যাটিক ব্লক রয়েছে যার সাথে 1.9.1.0 এ কাজ করা হয়েছিল, তবে 1.9.2.0 দিয়ে স্থির ব্লকগুলি বিক্ষিপ্তভাবে প্রদর্শন শুরু করে, কারণ তারা কখনও কখনও সঠিক ব্লকের পরিবর্তে ভুল ব্লকটি প্রদর্শন করে। কখনও কখনও তারা পছন্দসই হিসাবে প্রদর্শন। কেউ এই সমস্যা যা সঙ্গে সম্পর্কযুক্ত হতে পারে সমাধান কিভাবে কি জানে এই সমস্যা ?


এটি অপ্রতিরোধ্য এবং পাগল মনে হচ্ছে। আপনার যদি আরও ভাল ব্যাখ্যা থাকে তবে আমরা আপনাকে সহায়তা করতে পারি, তবে তাই আমি কোনও উপায় দেখছি না, দুঃখিত।
ফ্যাবিয়ান ব্ল্যাচসমিডট

2
আমি এটি নিশ্চিত করতে পারি। এটি একটি দোকানে মিলিত হয়েছে। ক্যাশে কীগুলি 2 টি ব্লকের মধ্যে অভিন্ন
স্যান্ডার ম্যানগেল


9
পাইওটারের মতে এটি এখন একটি নিশ্চিত বাগ এবং এটি ম্যাজেন্টো কোর দল দেখছে।
বেনমার্ক

1
এই বাগটি এখনও 1.9.2.4 এ দৃশ্যমান। বাগ ট্র্যাকার মন্তব্যে দৃশ্যাবলী / বিশদ যুক্ত হয়েছে ।
জিগোজাকো

উত্তর:


61

EE 1.14.2 এ আমার সমস্যা ছিল এবং দেখে মনে হচ্ছে একই ইস্যুটি সিই 1.9.2 এ উঠে এসেছে। আমি আমার এসই প্রশ্নের উপরে আমার সমস্যা এবং সমাধানটি নথিভুক্ত করেছি ।

মূলত নিম্নলিখিত কোডটি নির্মাণকারীর সাথে যুক্ত হওয়ার কারণে Mage_Cms_Block_Block:

$this->setCacheTags(array(Mage_Cms_Model_Block::CACHE_TAG));
$this->setCacheLifetime(false);

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

আমার সমাধানটি ছিল Mage_Cms_Block_Blockক্লাসটি ওভাররাইড করা এবং ব্লক আইডি এবং বর্তমান স্টোরের উপর ভিত্তি করে ক্যাশে কী তথ্য সেট করা।

/**
 * Override cms/block to add cache key. This started being a problem as of EE 1.14.2 and CE 1.9.2 when the _construct
 * method was added which turns on caching for cms blocks
 */
class Mysite_Cms_Block_Block extends Mage_Cms_Block_Block
{

    /**
     * If this block has a block id, use that as the cache key.
     *
     * @return array
     */
    public function getCacheKeyInfo()
    {
        if ($this->getBlockId()) {
            return array(
                Mage_Cms_Model_Block::CACHE_TAG,
                Mage::app()->getStore()->getId(),
                $this->getBlockId(),
                (int) Mage::app()->getStore()->isCurrentlySecure()
            );
        } else {
            return parent::getCacheKeyInfo();
        }
    }
}

অবশ্যই এটি আপনার নিজের মডিউলে কোনও config.xmlফাইল এবং ব্লক ওভাররাইড ইত্যাদির সাথে Mage_Cms_Block_Blockযুক্ত করা দরকার ternative

আপনি এখানে 1.9.2 এ যুক্ত হওয়া নতুন লাইনগুলি দেখতে পারেন


আপনি এই স্থিতিশীল ব্লকগুলি কীভাবে ইনস্ট্যান্ট করছেন? আপনি যদি এটি লেআউট এক্সএমএল এর মাধ্যমে করেন তবে আপনি কেবল আপনার ব্লকের মধ্যে একটি অনন্য নাম যুক্ত করতে পারেন এবং এটি জরিমানা ক্যাশে করা উচিত। কোন
দৃশ্যে

1
@ এরফান এই সমস্যাটি ঘটে যখন এই জাতীয় MS {ব্লক টাইপ = "সেমি / ব্লক" ব্লক_আইডি = "ব্লক_আইডি" like like এর মতো সিএমএস পৃষ্ঠাগুলিতে ব্লক যুক্ত করার সময় বা কোনও টেম্পলেটে স্ট্যাটিক ব্লক সরাসরি লোড করার সময়
অ্যান্ড্রু কেট

6
এই জঘন্য সমস্যার জন্য এখানে একটি বিনামূল্যে এক্সটেনশন extension আশা করি এটি এই সমস্যার মুখোমুখি প্রত্যেকের পক্ষে উপকৃত হবে। github.com/progammer-rkt/Rkt_SbCache
রাজীব কে

@ রাজিভ ম্যাজেন্টোর কোন সংস্করণের সাথে এটি সামঞ্জস্যপূর্ণ? Mage 1.6.x এর সাথেও সঠিকভাবে কাজ করবে?
জিটিক্স

1
আমি অ্যান্ড্রুকেটের উত্তর থেকে সাময়িক সমাধানের জন্য একটি সংক্ষিপ্তসার তৈরি করেছি। আপনার Magento ডিরেক্টরিতে কেবল এই অ্যাপ্লিকেশন / কোড / স্থানীয় / ম্যাজ / সেমি / ব্লক / ব্লক.এফপি যুক্ত করুন এবং সমস্যার সমাধান হবে। আপনার পরবর্তী ম্যাজেন্টো আপডেট করার আগে কেবল ফাইলটি সরিয়ে ফেলতে ভুলবেন না (ধরে নিলেন তারা পরবর্তী আপডেটের মধ্যে ফিক্স অন্তর্ভুক্ত করেছেন)।
জে এল-কাকে

13

আমি সবেমাত্র 1.9.2.0 এ আপগ্রেড করেছি এবং আমি এটিও অনুভব করছি। স্ট্যাটিক ব্লক + পণ্য প্রদর্শন করতে সেট করা বিভাগগুলি এলোমেলোভাবে ভুল স্ট্যাটিক ব্লক প্রদর্শন করছে। এটি আমার 1.9.2.0 আপগ্রেডের আগে উপস্থিত ছিল না।

অস্থায়ী ফিক্স ব্লক এইচটিএমএল আউটপুট ক্যাশে অক্ষম করে এবং প্রদর্শিত ব্লকগুলি সঠিকভাবে হয়।


আমি হোম পৃষ্ঠায় এবং পণ্য পৃষ্ঠাগুলিতেও
wk

আপাতত এই কাজটি তবে একটি তিক্ত সমাধান হওয়া উচিত
wk

হ্যাঁ, আপাতত আমি এটাই করেছি did
শরীফ

13

উপরের সমাধানটি সম্পূর্ণ পদক্ষেপ সরবরাহ করে না বলে এখানে আমরা স্থানীয় মডিউল ভিত্তিক সমাধান নিয়ে যাই। আমাদের কাস্টম মডিউল তৈরি করতে হবে কারণ আপনি সকলেই জানেন যে ম্যাজেন্টো বুগিম্যান আপনাকে পাবে! যদি কোর পরিবর্তন হয় :)

আপনার নিম্নলিখিত ফাইলগুলি প্রয়োজন: app/etc/modules/Bhupendra_Cms.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Bhupendra_Cms>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Cms/>
            </depends>
        </Bhupendra_Cms>
    </modules>
</config>

app/code/local/Bhupendra/Cms/etc/config.xml

<?xml version="1.0"?>
<config>
        <modules>
            <Bhupendra_Cms>
                <version>1.0.0</version>
            </Bhupendra_Cms>
        </modules>
        <global>
            <blocks>
                <cms>
                    <rewrite>
                        <block>Bhupendra_Cms_Block_Block</block>
                        <widget_block>Bhupendra_Cms_Block_Widget_Block</widget_block>
                    </rewrite>
                </cms>
            </blocks>
        </global>
</config>

app/code/local/Bhupendra/Cms/Block/Block.php

<?php
class Bhupendra_Cms_Block_Block extends Mage_Cms_Block_Block {

   public function getCacheKeyInfo()
    {

      $blockId = $this->getBlockId();
      if ($blockId) {
            $result = array(
                $blockId,
                Mage::app()->getStore()->getCode(),
            );
      } else {
           $result = parent::getCacheKeyInfo();
       }
       return $result;
   }

}

app/code/local/Bhupendra/Cms/Block/Widget/Block.php

class Bhupendra_Cms_Block_Widget_Block extends Mage_Cms_Block_Widget_Block
{
       /**
     * Storage for used widgets
     *
     * @var array
     */
    static protected $_widgetUsageMap = array();

    /**
     * Prepare block text and determine whether block output enabled or not
     * Prevent blocks recursion if needed
     *
     * @return Mage_Cms_Block_Widget_Block
     */
    protected function _beforeToHtml()
    {
        parent::_beforeToHtml();
        $blockId = $this->getData('block_id');
        $blockHash = get_class($this) . $blockId;

        if (isset(self::$_widgetUsageMap[$blockHash])) {
            return $this;
        }
        self::$_widgetUsageMap[$blockHash] = true;

        if ($blockId) {
            $block = Mage::getModel('cms/block')
                ->setStoreId(Mage::app()->getStore()->getId())
                ->load($blockId);
            if ($block->getIsActive()) {
                /* @var $helper Mage_Cms_Helper_Data */
                $helper = Mage::helper('cms');
                $processor = $helper->getBlockTemplateProcessor();
                $this->setText($processor->filter($block->getContent()));
                $this->addModelTags($block);
            }
        }

        unset(self::$_widgetUsageMap[$blockHash]);
        return $this;
    }

     /**
     * Retrieve values of properties that unambiguously identify unique content
     *
     * @return array
     */
    public function getCacheKeyInfo()
    {
        $result = parent::getCacheKeyInfo();
        $blockId = $this->getBlockId();
        if ($blockId) {
            $result[] = $blockId;
       }
        return $result;
   }
}

আরও তথ্যের জন্য আপনি নীচের লিঙ্কটি দেখতে পারেন এবং এগুলি থেকে ডাউনলোড করতে পারেন https://www.milople.com/blogs/ecommerce/solve-magento-static- block-display-issue.html


মডিউলটি সেটআপ করুন এবং এটি কোনও উপকারে আসেনি - আমার সমস্যাটি হ'ল বিভাগে নির্ধারিত সিএমএস ব্লকগুলি অদৃশ্য হয়ে যায়, তারা একেবারেই দেখায় না।
হাইম

@ হাইম আপনি যদি ১.৯.২.২ ব্যবহার করে থাকেন তবে আপনাকে সেই নির্দিষ্ট ব্লকের সিস্টেম-> অনুমতি -> সিমস ব্লকে প্রবেশ করতে হবে
ভূপেন্দ্র জাদেজা

আমি ম্যাজেন্টো ভেরি ব্যবহার করছি। 1.9.2.0 - কিন্তু আবার আমার সমস্যা কিছুটা ভিন্ন, আমি একটি বিভাগ পৃষ্ঠা এবং CMS ব্লকে দেখানোর জন্য একটি, CMS ব্লক সেট করা হয় মাত্র প্রদর্শন করা হয় না - যদি আমি ক্যাশে রিফ্রেশ পরবর্তী সময় এটা ঠিক dissapears পর্যন্ত দেখায়
Haim

আমি আপনাকে ম্যাজেন্টো সংস্করণ আপডেট করার পরামর্শ দিচ্ছি আমার মনে হয় এটি এখন হয়েছে।
ভূপেন্দ্র জাদেজা

7

এটির জন্য কোনও সরকারী প্যাচ নেই, তবে এটি সিই ১.৯.২.২০১ resolved এ সমাধান করা হয়েছিল

diff -r magento-CE-1.9.2.0/app/code/core/Mage/Cms/Block/Block.php magento-CE-1.9.2.1/app/code/core/Mage/Cms/Block/Block.php
74a75,94
> 
>     /**
>      * Retrieve values of properties that unambiguously identify unique content
>      *
>      * @return array
>      */
>     public function getCacheKeyInfo()
>     {
>         $blockId = $this->getBlockId();
>         if ($blockId) {
>             $result = array(
>                 'CMS_BLOCK',
>                 $blockId,
>                 Mage::app()->getStore()->getCode(),
>             );
>         } else {
>             $result = parent::getCacheKeyInfo();
>         }
>         return $result;
>     }
diff -r magento-CE-1.9.2.0/app/code/core/Mage/Cms/Block/Widget/Block.php magento-CE-1.9.2.1/app/code/core/Mage/Cms/Block/Widget/Block.php
84a85
>                 $this->addModelTags($block);
90a92,106
> 
>     /**
>      * Retrieve values of properties that unambiguously identify unique content
>      *
>      * @return array
>      */
>     public function getCacheKeyInfo()
>     {
>         $result = parent::getCacheKeyInfo();
>         $blockId = $this->getBlockId();
>         if ($blockId) {
>             $result[] = $blockId;
>         }
>         return $result;
>     }

দ্রষ্টব্য: একাধিক স্টোর ভিউতে সিএমএস পৃষ্ঠাগুলি নিয়ে এখনও সমস্যা রয়েছে বলে জানা গেছে:

ম্যাজেন্টো সিই 1.9.2.1 এটিকে কেবল আংশিকভাবে স্থির করে।

সমস্যাটি এখনও একাধিক স্টোর ভিউতে সিএমএস পৃষ্ঠাগুলিতে স্থির থাকে। এখানে একটি আপডেট হওয়া হটফিক্স রয়েছে (নোট করুন এটি কোনও সরকারী প্যাচ নয়): https://gist.github.com/tux-rampage/77b286f7973336877f7b#file-luka-mce20150805-1-9-2-1-caching-hotfix-patch

সূত্র: http://www.magentocommerce.com/products/bug-tracking/issue/index/id/870



4

আমি এই বিষয়টিও নিশ্চিত করতে পারি।

বংশবৃদ্ধি:

  1. CMS -> Widgetsবাম পাশের বারে একটি স্ট্যাটিক ব্লক যুক্ত করতে একটি উইজেট তৈরি করুন Using

  2. তারপরে step 1বাম পাশের বারে দ্বিতীয় স্ট্যাটিক ব্লক (এর চেয়ে আলাদা ব্লক ) যুক্ত করতে দ্বিতীয় উইজেট তৈরি করুন ।

  3. যদি ক্যাশে অক্ষম করা থাকে তবে উভয় স্ট্যাটিক ব্লকগুলি সঠিকভাবে সাইডবারে প্রদর্শিত হবে displayed

  4. তবে আপনি যদি ক্যাশে সক্ষম করেন তবে আপনি step 1 দুবার প্রদর্শিত থেকে স্থিতিশীল ব্লকটি দেখতে পাবেন ।


হাই জিতিক্স আমিও একই সমস্যার মুখোমুখি হচ্ছি যেমন আপনি কীভাবে সমাধান করছেন আপনি আমাকে তা বলতে পারেন
যামন ২১

3

ম্যাজেন্টো থেকে পিয়োটার আপাতত এই ইস্যুটির জন্য একটি বেসরকারী অফ প্যাচ প্রকাশ করেছে: https://gist.github.com/piotrekkineski/ecd245e8c9390e4020db

কৌতুক করতে পারে বলে মনে হচ্ছে। হ্যাঁ, এটি মূলটি সম্পাদনা করছে তবে ম্যাজেন্টো অফিসিয়াল প্যাচ বা পরবর্তী সংস্করণ প্রকাশ না করা পর্যন্ত বিষয়টি ঠিক করে ...


এই কৌশলটি নতুন সংস্করণ 1.9.3.3 এ ব্যবহৃত হয়। তবে এটি আমার সমস্যা ঠিক করে না।
বিদ্রোহী

3

Magento 1.9.2.1 এ আপগ্রেড করুন

আমি এটি করেছি এবং ব্লক এইচটিএমএল আউটপুট জন্য ক্যাশে সক্ষম করেছিলাম এবং এটি স্থির হয়ে গেছে বলে মনে হচ্ছে।

পাশাপাশি নতুন প্রকাশে সুরক্ষা সংক্রান্ত কয়েকটি সমস্যা সমাধান করা হয়েছে।


3

Magento এর সর্বশেষ সংস্করণে এটি নতুন সুরক্ষা বৈশিষ্ট্যগুলির সাথে বাড়িয়ে তোলে। আপনি সিস্টেমে অনুমতিগুলি> স্ট্যাটিক ব্লকে অনুমতিগুলি যুক্ত করতে পারেন।


2
স্টেটিক ব্লকটি ক্যাচ করার ক্ষেত্রে ম্যাজেন্টো ১.৯.২.০ এ সমস্যা আছে, আপনি অন্যরকম কিছু কথা বলছেন।
wk

ভাল
লাগল

আমি এই পছন্দ। :)
জেড ব্ল্যাকবার্ড

2

আমার দোকানে আমার একই সমস্যা ছিল issue আমি এখনও অবধি যে সর্বোত্তম কার্যকারিতা খুঁজে পেয়েছি তা হ'ল আক্রান্ত ব্লকগুলির জন্য ক্যাচিং নিষ্ক্রিয় করা। আপনি ব্লকগুলির ক্যাশে জীবনকাল স্থির করে সেট করতে পারেন।

কোনও লাইভ সাইটে "ব্লক এইচটিএমএল আউটপুট" ক্যাশেটি বিশ্বব্যাপী নিষ্ক্রিয় করা কোনও ভাল ধারণা নয় কারণ এটি অকারণে সাইটের কার্য সম্পাদনকে প্রভাবিত করে।

এক্সএমএলে একটি ব্লকের জন্য ক্যাশে অক্ষম করা হচ্ছে:

<block ... >
    ...
    <action method="unsetData"><key>cache_lifetime</key></action>
    <action method="unsetData"><key>cache_tags</key></action>
</block>

পিএইচপি-তে একটি ব্লকের জন্য ক্যাশে অক্ষম করা হচ্ছে:

$this->getLayout()->createBlock('cms/block')
    ->setCacheLifetime(null)
    ->setBlockId('block-id')
    ->toHtml();

এই নিবন্ধে উল্লিখিত হিসাবে ক্যাশে আজীবন "0" তে সেট করবেন না


আন্দ্রেস - আমি কৌতূহল করছি যে নিবন্ধে বর্ণিত কৌশলটি ব্যবহারের প্রভাব কী এবং আপনি এখানে যে দুটি বিকল্প সরবরাহ করেন তা কীভাবে আপনার রূপরেখার নেতিবাচক পরিণতিগুলি এড়াতে পারে?
ব্রায়ান 'বিজে' হফপাউয়ার জুনিয়র

1
প্রথম পদ্ধতির কাজ হচ্ছে না কারণ, ম্যাজেন্টো সেই লেআউট আপডেটটিকে এই $block->setCacheLifeTime("null");নোট NULL এবং "নাল" দুটি আলাদা জিনিস হিসাবে ব্যাখ্যা করবে এবং পরে প্রত্যাশিত ফলাফল প্রাপ্ত হবে না।
রাজীব কে টমি

1
@ বিজে হফপাউয়ার: যদি কোনও সেন্টিমিটার / ব্লক ব্লকের ক্যাশে সক্রিয় করা হয়, তবে একই ক্যাশেড সেমি / ব্লক সমস্ত স্টোরের দর্শনগুলির জন্য ব্যবহৃত হবে। আপনার যদি একই ব্লক-শনাক্তকারীটির জন্য ইংরেজি (স্টোর ভিউ) এবং জার্মান (স্টোর ভিউ) সংস্করণ থাকে তবে ইংরেজি বা জার্মান উভয় স্টোর দর্শনের জন্য ব্যবহার করা হবে। এই ব্লকের জন্য ক্যাশে অক্ষম করা সমস্যার সমাধান করে। যদি আপনি এখনও অবরুদ্ধটিকে ক্যাশে করতে চান তবে আপনি ব্লকটিকে অন্য একটি ব্লকে রেখে এই পরিবর্তে এই ব্লকটি ক্যাশে করতে পারেন।
Andreas Riedmüller

1
@ রাজীব ধন্যবাদ, আমি বেশ কয়েকটি পোস্টে এই পদ্ধতিটি পেয়েছি তবে আমি ঠিক নিশ্চিত যে আপনি ঠিক আছেন। আমি এক্সএমএলে ক্যাশে অক্ষম করার পদ্ধতিটি পরিবর্তন করেছি। : আগের পদ্ধতি যদিও এখানে একটি গৃহীত উত্তর ছিল stackoverflow.com/questions/27684236/...
আন্দ্রিয়াস Riedmüller

2

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

ডিফল্টরূপে ম্যাজেন্টোতে এর ক্যাচিং প্রযুক্তি সম্পর্কিত বেশ কয়েকটি প্যাকেজ রয়েছে। এগুলিতে জেন্ড এবং রেডিসের জন্য অ্যাডাপ্টার এবং গ্রন্থাগার অন্তর্ভুক্ত রয়েছে।

উপযুক্ত প্যাকেজটি সন্ধান করার পরিবর্তে, আমি আমার ইনস্টলেশনের সমস্ত প্যাকেজ আপডেট করতে বেছে নিয়েছি।

তারপরে আমি এই চেকমার্কটি বেছে নিয়েছি: Mage_All_Lটেস্ট যা সর্বশেষ স্থিতিশীল ম্যাজেন্টো 1.9.0.0 প্রকাশের জন্য একটি মেটাপ্যাকেজ ack

কেবলমাত্র সঠিক প্যাকেজগুলি আপগ্রেড করে সমস্যাটি সমাধান করা সম্ভব। আমি অনুভব করেছি যে এটি যাওয়ার আরও ভাল উপায় কারণ আমি সন্দেহের মধ্যে আছি যে এই পদ্ধতিটি সুরক্ষা প্যাচগুলিও প্রয়োগ করে।


1

আপনাকে একটি পূর্ণ আপগ্রেড করতে হবে, বা 1.9.2.0 ব্যাকপোর্ট করতে হবে

সিএমএস ব্লক এবং উইজেট ক্যাচিং পরিবর্তন 1.9.2.1

Magento-1921 / অ্যাপ্লিকেশন / কোড / কোর / পুরোনো যাদুকর / সিএমএস / ব্লক / Block.php

diff -r magento-1920/app/code/core/Mage/Cms/Block/Block.php magento-1921/app/code/core/Mage/Cms/Block/Block.php
74a75,94
> 
>     /**
>      * Retrieve values of properties that unambiguously identify unique content
>      *
>      * @return array
>      */
>     public function getCacheKeyInfo()
>     {
>         $blockId = $this->getBlockId();
>         if ($blockId) {
>             $result = array(
>                 'CMS_BLOCK',
>                 $blockId,
>                 Mage::app()->getStore()->getCode(),
>             );
>         } else {
>             $result = parent::getCacheKeyInfo();
>         }
>         return $result;
>     }

Magento-1921 / অ্যাপ্লিকেশন / কোড / কোর / পুরোনো যাদুকর / সিএমএস / ব্লক / উইজেট / Block.php

diff -r magento-1920/app/code/core/Mage/Cms/Block/Widget/Block.php magento-1921/app/code/core/Mage/Cms/Block/Widget/Block.php
84a85
>                 $this->addModelTags($block);
89a91,105
>     }
> 
>     /**
>      * Retrieve values of properties that unambiguously identify unique content
>      *
>      * @return array
>      */
>     public function getCacheKeyInfo()
>     {
>         $result = parent::getCacheKeyInfo();
>         $blockId = $this->getBlockId();
>         if ($blockId) {
>             $result[] = $blockId;
>         }
>         return $result;

0

আমি ম্যাজেন্টো 1.9.3.8 ব্যবহার করছি এবং সমস্যাটি এখনও বিদ্যমান।

আপনি আমার এখানে ফিক্স খুঁজে পেতে পারেন :

মূলত আমি পৃষ্ঠা url এর উপর ভিত্তি করে একটি অনন্য স্ট্রিং যুক্ত করছি এবং প্রতিটি ক্যাশে কী তথ্যের সাথে blockId থাকি, তাই প্রতিটি ব্লকের একটি অনন্য কী থাকবে:

 /**
 * Generates a string based on the page url (for example category/product pages) and concatenate the block id to the url
 * Removes the caracters: /, . , &, = and , from this string
 */
private function generateUrlBasedString($blockId = null)
{
    $currentUrl = Mage::helper('core/url')->getCurrentUrl();
    $url = Mage::getSingleton('core/url')->parseUrl($currentUrl);
    $path = '_' . $url->getPath();

    $path = str_replace('/', '', $path);
    $path = str_replace('.', '', $path);
    $path = str_replace('&', '', $path);
    $path = str_replace(',', '', $path);
    $path = str_replace('=', '', $path);

    if(isset($blockId)) {
        $path .= '_' . $blockId;
    }

    return $path;
}
/**
 * Retrieve values of properties that unambiguously identify unique content
 *
 * @return array
 */
public function getCacheKeyInfo()
{
    $blockId = $this->getBlockId();
    if ($blockId) {
        $result = array(
            'CMS_BLOCK',
            $blockId,
            Mage::app()->getStore()->getCode() . $this->generateUrlBasedString($blockId),
        );
    } else {
        $result = parent::getCacheKeyInfo();
    }
    return $result;
}

যতক্ষণ না ম্যাজেন্টো এই সমস্যার জন্য কোনও সমাধান প্রস্তুত না করে আপনি ফাইলটি তৈরি করতে পারেন:

অ্যাপ্লিকেশন / কোড / স্থানীয় / পুরোনো যাদুকর / সিএমএস / ব্লক / Block.php

এবং উপরের গিথুব ইউআরএল থেকে সামগ্রী হিসাবে কোডটি প্রবেশ করান।

এই কোডটি ম্যাজেন্টো 1.9.2। * এবং 1.9.3। * এর জন্য পরীক্ষিত


-1

এটি 1.9.2 সংস্করণে বাগটি নিশ্চিত হয়েছে, আপাতত আপনি প্রশাসক -> ক্যাশে পরিচালন বিভাগ থেকে কেবল "ব্লক এইচটিএমএল আউটপুট" ক্যাশে অক্ষম করে এই সমস্যাটি সমাধান করতে পারেন

আশা করি এটা সাহায্য করবে


স্টুডিও 2f এর উত্তরটির উল্লেখ ছিল, আপনি @ অ্যান্ড্রুকেট ব্যবহার করতে পারেন বা মূল প্রশ্নটিতে "এই সমস্যাটি" ক্লিক করতে পারেন এটি আপনাকেও সহায়তা করবে
wk

2
আমি বলব যে কেবলমাত্র নির্দিষ্ট কিছু ব্লকে নিজেকে প্রকাশ করে এমন সমস্যা সমাধানের জন্য সমস্ত ব্লক ক্যাচিং নিষ্ক্রিয় করা যদি আপনি আঙুলের তুষারপাতের বিকাশ করেন তবে কারও সম্পূর্ণ হাত কেটে ফেলার মতো। আঙুল কেটে ফেলা, এমনকি অপ্রীতিকর হলেও, অসুস্থতার জন্য কমপক্ষে একটি আনুপাতিক প্রতিক্রিয়া হবে। অ্যান্ড্রুকেটের ( magento.stackexchange.com/users/527/andrewkett ) উত্তরটি আরও যুক্তিসঙ্গত পন্থা: magento.stackexchange.com/questions/73685/…
ব্রায়ান 'বিজে' হফপাউয়ার জুনিয়র

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