كيف يمكن إضافة كتلة إلى التخطيط، إذا كان هناك كتلة CMS موجودة في التخطيط؟

magento.stackexchange https://magento.stackexchange.com//questions/32308

سؤال

حتى هنا هو الوضع.أحتاج إلى إنشاء core/template منع برمجيا، إذا كان هناك CMS Block(Static Block) موجود في بنية التخطيط.سأستخدم هذا القالب لإضافة بعض المحتوى إليه بشكل ديناميكي.

إذا كان هناك أي مراقب للكتل الثابتة، فقد أستخدمه.سيكون الخيار الآخر هو أنه يمكنني تحقيق نفس الشيء من خلال التخطيطات، إذا كان هناك مقبض تخطيط محدد للكتلة الثابتة (تمامًا مثل cms_page مقبض التخطيط).

لكن لم أتمكن من العثور على أي مراقب للكتل الثابتة حتى الآن.لذلك لا أستطيع الذهاب مع المراقب.أنا أيضًا أبحث عن أي مقبض تخطيط محدد للكتلة الثابتة.هذا البحث جعلني يائسًا أيضًا.لم أتمكن من العثور على واحد.لذا فإن تحديث التخطيط غير ممكن أيضًا.

لذا يبدو أن الطريقة الوحيدة التي يمكنني من خلالها تحقيق ذلك هي مراقبة أي أحداث عامة (ربما controller_action_layout_generate_blocks_after).لكني أشعر أنها طريقة سيئة للغاية..

اذا ماذا يجب ان افعل الان ؟ما هي أفضل طريقة للقيام بذلك؟هل أحتاج إلى إنشاء مستمع حدث مخصص للكتل الثابتة (لا أعرف ما إذا كان ذلك ممكنًا !!)؟شارك افكارك.

ملحوظة : أنا أقوم بإنشاء امتداد.أريدها نظيفة قدر الإمكان.:)

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

المحلول 2

ويبدو أنه لا توجد طريقة أخرى للقيام بذلك.لذلك استمعت إلى الحدث العام controller_action_layout_generate_blocks_after .هناك قمت بإنشاء كتلة جديدة في حالة وجود كتلة cms.

نصائح أخرى

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

هنا إجابة للقيام بنهج XML.

<action method="addLink" translate="label title" module="catalog" ifconfig="catalog/seo/site_map">
    <label>Site Map</label>
    <url helper="catalog/map/getCategoryUrl" />
    <title>Site Map</title>
</action>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top