سؤال

لدي مشكلة ويبدو أن تكون ذات صلة إلى التخزين المؤقت CMS كتل ثابتة.

لدي cms الصفحة داخل صفحة أنا تقديم عدد من cms كتل ثابتة.نسخة مبسطة من CMS محتوى الصفحة التي تبدو مثل هذا:

<div class="cms-block-1">{{block type="cms/block" block_id="banner_home"}}</div> 
<div class="cms-block-2">{{block type="cms/block" block_id="promo_home_1_1"}}</div> 
<div class="cms-block-3">{{block type="cms/block" block_id="promo_home_1_2"}}</div> 
<div class="cms-block-4">{{block type="cms/block" block_id="promo_home_2_1"}}</div> 
<div class="cms-block-5">{{block type="cms/block" block_id="promo_home_2_2"}}</div> 
<div class="cms-block-6">{{block type="cms/block" block_id="promo_home_2_3"}}</div> 
<div class="cms-block-7">{{block type="cms/block" block_id="promo_home_3_1"}}</div> 
<div class="cms-block-8">{{block type="cms/block" block_id="promo_home_3_2"}}</div>

تحميل الصفحة كما هو متوقع على الفور بعد كتلة ذاكرة التخزين المؤقت مسح هذه الصفحة تبحث عن شيء مثل هذا:

<div class="cms-block-1">banner content</div> 
<div class="cms-block-2">promo_home_1_1 content</div> 
<div class="cms-block-3">promo_home_1_2 content</div> 
<div class="cms-block-4">promo_home_2_1 content</div> 
<div class="cms-block-5">promo_home_2_2 content</div> 
<div class="cms-block-6">promo_home_2_3 content</div> 
<div class="cms-block-7">promo_home_3_1 content</div> 
<div class="cms-block-8">promo_home_3_1 content</div>

ومع ذلك بعد inital تحميل الصفحة في كل صفحة اللاحقة تحميل محتوى غير صحيحة.يبدو مثل هذا:

<div class="cms-block-1">banner content</div> 
<div class="cms-block-2">promo_home_1_1 content</div> 
<div class="cms-block-3">promo_home_1_2 content</div> 
<div class="cms-block-4">promo_home_1_1 content</div> 
<div class="cms-block-5">promo_home_1_2 content</div> 
<div class="cms-block-6">promo_home_2_1 content</div> 
<div class="cms-block-7">promo_home_2_2 content</div> 
<div class="cms-block-8">promo_home_2_3 content</div>

في المثال الثاني يمكنك أن ترى الأولين الملل صحيحة, لكن كل شيء بعد ذلك يتم عرض الخطأ محتوى block_id.أيضا, كتلة promo_home_1_1 و promo_home_1_2 على حد سواء المقدمة مرتين promo_home_3_1 و promo_home_3_2 أبدا المقدمة.مثل رسم الخرائط بين block_id وما يرتبط بها من كتلة ثابتة المحتوى مختلطة بطريقة أو بأخرى.هذا هو ذات الصلة إلى التخزين المؤقت كما لو كان كتلة ذاكرة التخزين المؤقت لم يتم تمكين ثم لم أعد أرى المشكلة.

أيضا, انها على الارجح الجدير بالذكر أن هذه الصفحة أعمل على هة 1.13, ولكن بعد الترقية إلى EE 1.14.2 هذه المشكلة بدأت تحدث.

أدرك جميلة من الصعب القول ما هو الخطأ دون معرفة ماذا يجري في النظام ولكن أنا على أمل شخص ما قد تكون قادرة على أن تعطيني على الأقل المزيد من الاتجاه هنا كما أنا ينفد من الأفكار.

تحديث:

كما أنني حاولت هذا مع الحاجيات ، هـ.ز

<div class="cms-block-1">{{widget type="cms/widget_block" template="cms/widget/static_block/default.phtml" block_id="63"}}</div>
<div class="cms-block-2">{{widget type="cms/widget_block" template="cms/widget/static_block/default.phtml" block_id="64"}}</div>
<div class="cms-block-3">{{widget type="cms/widget_block" template="cms/widget/static_block/default.phtml" block_id="65"}}</div>

في هذه الحالة كل 3 كتل عاد نفس المحتوى على الرغم من معرفات لافتا إلى كتل مختلفة في قاعدة البيانات.عندما يتم مسح ذاكرة التخزين المؤقت كتلة عاد في بعض الأحيان تغيير ، ولكن كل ثلاثة الحاجيات سوف لا تزال لديها نفس المحتوى.

هل كانت مفيدة؟

المحلول

طيب حتى أنا وجدت سبب هذه المشكلة و يبدو أن المشكلة الأساسية في الماجنتو.

هناك جديد _construct الأسلوب إضافة إلى Mage_Cms_Block_Block في الماجنتو 1.14.2 الذي يحتوي على التعليمات البرمجية التالية.

/**
 * Initialize cache
 *
 * @return null
 */
protected function _construct()
{
    /*
    * setting cache to save the cms block
    */
    $this->setCacheTags(array(Mage_Cms_Model_Block::CACHE_TAG));
    $this->setCacheLifetime(false);
}

هذا هو فعال تشغيل التخزين المؤقت كتل cms.لا توجد ذاكرة التخزين المؤقت تعيين مفتاح لذلك يعود إلى Mage_Core_Block_Abstract::getCacheKeyInfo الذي يستخدم اسم كتلة في التخطيط.في هذه الحالة نحن لسنا في الواقع باستخدام تخطيط xml file لإضافة كتلة و لا يوجد اسم مجموعة.الماجنتو يبدو في محاولة التعامل مع هذا عن طريق وضع شيء مثل ANONYMOUS_78 اسم.ولكن لسبب ما لا يبدو أن العمل 100% ومن ثم التكرارات كنت أشاهده.

الحل كان أن تجاوز Mage_Cms_Block_Block الدرجة في بلدي تمديد وإضافة جديدة طريقة تعيين ذاكرة التخزين المؤقت مفتاح صراحة إلى كتلة الهوية بدلا من تعيين القيمة.الطبقة تبدو مثل هذا:

/**
 * Override cms/block to add cache key. This started being a problem as of EE 1.14.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();
        }
    }
}

هذا يبدو أنه قد حل المشكلة.

تحديث:

يبدو أن نفس هذه المشكلة أيضا موجود في CE 1.9.2

نصائح أخرى

لعملاء Magento EE، يرجى طلب التصحيح Supee-5874 من فريق Magento Enterprise Support Support.

سيقوم بتحديث ملفين

giveacodicetagpre.

لا أستطيع نشر التصحيح الفعلي من Magento كما هو ممتلكاتهم.

سعداء هنا أن Magento الآن مخزون كتل ثابتة أيضا.نظرا لأن النسخة التي تمت ترقيتها الحالية تتضمن مشكلة WIERD هذه بسبب مخاطات الكتل الثابتة، يمكنك استخدام الوحدة النمطية الخاصة بي مجانا تماما.

تم إنشاء هذا التمديد لخاشك كتل ثابتة أفضل.يأخذ أيضا في الاعتبار ما إذا كان الموقع آمن أم لا.أيضا التمديد ليس لديه أي إعادة كتابة أساسية، مما يجعل هذه الوحدة أكثر صعوبة.

هنا تذهب .

للحصول على نظرة عامة أفضل على الملحق، يمكنك إحالة هذا الموضوع .

قدمنا تصحيحا ل CE، الذي يحل هذه المشكلة.منذ EE مقرها في CE، قد ينطبق هذا أيضا.

يمكنك تنزيل هذا المسار من GIST: https:/gist.github.com/tux-Rampage / 77B286F7973336877F7B

أسفل تحميل GIST، قم بفكه، وتشغيل الأمر التالي في جذر Magento الخاص بك:

giveacodicetagpre.

اختبار هذا على بيئة التدريج قبل تطبيقه على نظام مباشر!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top