سؤال

أحتاج إلى تعيين بعض العلامات (العنوان والوصف) بعد تقديم التخطيط.أعرف كيفية تعيين العناوين عبر ملفات التخطيط:

<reference name="head">
 <action method="setTitle" translate="title"><title>Your Title</title></action> 
</reference>

أو عبر الكود عن طريق الوصول إلى عنصر كتلة الرأس واستدعاء طريقة setTitle('your title') عليه

$this->getLayout()->getBlock('head')->setTitle('your title'); 

ولكني أحتاج إلى جلب العناوين ديناميكيًا من عنصر من مجموعة.

إذا اتبعت نهج وحدة التحكم، فسوف أقوم بتحميل نفس العنصر مرتين لأنني بحاجة إلى تحميل المنتج للحصول على الحقول لتعيينها كعنوان ووصف ومرة ​​أخرى في الكتلة لإظهاره في صفحة المنتج.

هل من الحكمة حفظه مع Mage::register('variable', 'value');؟هل يجب علي إنشاء التخطيط بالكامل برمجيًا وتعيين البيانات معه $this->getLayout()->getBlock('your.block.name.in.the.layout')->assign('data', $data);?

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

المحلول

عندما تتحدث عن منتج ما، يجب أن تحاول الحصول على المنتج قبل renderLayout اتصل للوصول إلى كتلة الرأس والحصول على المنتج منها Mage::registry('product') أو Mage::registry('current_product')

نصائح أخرى

يمكنك تعيين كتلة جديدة بدون وجود قالب في المحتوى، والذي يتم تحميله بعد المجموعة.في هذه الكتلة، احصل على جميع المعلومات الضرورية عن طريق الحصول على البيانات من الكتلة الرئيسية (مثل المنتج) أو التسجيل.ثم اتصل getBlock('head')->setTitle('your title'); من _prepareLayout

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