أدخل كتلة غير محددة في صفحة نظام إدارة المحتوى (في موضع معين)
-
13-12-2019 - |
سؤال
أنا بناء موضوع مخصص ، وذلك باستخدام قاعدة / الافتراضي كما ، حسنا ، الأساس.أريد أن استخدام بنيت الماجنتو في وظيفة الاشتراك النشرة الإخبارية ، ولكن أنا لا أريد أن تظهر في left
منع.بالنسبة لمعظم الصفحات ، أريد أن تظهر في الجزء السفلي من content
كتلة ، ولكن للصفحة الرئيسية ، أريد ذلك في مكان ما في منتصف content
منع.لا أستطيع معرفة أفضل طريقة لوضع كتلة حيث أريد ذلك عند إعادة إضافته مع شمل تخطيط.
للقيام بذلك ، بدأت في موضوعي local.xml
لإلغاء تعيين left.newsletter
كتلة من left
بلوك:
<layout version="0.1.0">
...
<default>
...
<reference name="left">
<action method="unsetChild"><alias>left.newsletter</alias></action>
</reference>
...
</default>
...
</layout>
ثم, نظرا لأن معظم الموقع يجب أن يحتوي على نموذج الاشتراك في النشرة الإخبارية في نهاية content
كتلة ، مرة أخرى في local.xml
, ، أسفل الكود أعلاه ولكن لا يزال داخل default
مقبض التخطيط ، أضفت:
<reference name="content">
<action method="insert">
<block>left.newsletter</block>
<siblingName></siblingName>
<after>true</after>
</action>
</reference>
هم.كنت أتوقع أن يضع هذا نموذج الاشتراك في النشرة الإخبارية في نهاية content
كتلة (على أساس بلدي تتبع ماجي_ كوري_بلوك مجردة:: إدراج ()) ، لكنه وضعه في البداية بدلا من ذلك!لماذا لا يتم تقديم النموذج في الجزء السفلي من content
بلوك?
مشكلة أخرى لدي هي أنه فقط للصفحة الرئيسية ، أريد نقل كتلة الاشتراك في النشرة الإخبارية إلى مكان معين داخل content
كتلة ، و ، أود أن تكون قادرة على القيام بذلك كل من محرر صفحة كمس الماجنتو بحيث تحرير الضوء وصيانة تعديل تخطيط سهلة.
إليك محتوى صفحتي الرئيسية (تم إدخاله في الصفحة Content
علامة التبويب في محرر صفحة نظام إدارة المحتوى):
{{block type="cms/block" block_id="home_page_marquee"}}
<!-- PUT NEWSLETTER HERE -->
<div class="inner_container">
{{widget type="my_namespace/slider_customproduct"}}
{{widget type="my_namespace/slider_featuredproduct"}}
{{widget type="my_namespace/slider_blogpost"}}
<div id="about">
{{block type="cms/block" block_id="home_page_about_us"}}
</div>
<div id="team">
{{block type="cms/block" block_id="home_page_team"}}
</div>
</div>
في هذه الصفحة ، أود الحصول على كتلة الاشتراك في النشرة الإخبارية حيث يوجد هذا التعليق.
لقد حاولت بضعة أشياء.أولا ، حاولت استخدام محرر صفحة كمس Design
علامة التبويب لإدخال بعض التحديثات تخطيط مخصص:
<reference name="content">
<!-- Re-unset the newsletter block -->
<action method="unsetChild"><alias>left.newsletter</alias></action>
<!-- Re-re-insert the newsletter block -->
<action method="insert">
<block>left.newsletter</block>
<siblingName>home_page_marquee</siblingName>
<after>true</after>
</action>
</reference>
هذا بنجاح إعادة إزالة كتلة الاشتراك في النشرة الإخبارية من أسفل الصفحة الرئيسية ، ولكن إدراجه ، ومن المفارقات ، في نهاية content
منع.لقد حاولت اثنين من الخيوط على إصلاح هذا، مثل إعطاء كتل كمس ثابتة بلدي name
السمة ، واستخدام الاسم في <siblingName>
, ، لكن هذا لم ينجح.
لقد حاولت أيضا إضافة كتلة الاشتراك في النشرة الإخبارية باستخدام {{block}}
الوسم.مرة أخرى في الصفحة الرئيسية Content
:
{{block type="cms/block" block_id="home_page_marquee"}}
{{block type="newsletter/subscribe" name="left.newsletter" template="newsletter/subscribe.phtml"}}
<div class="inner_container">
{{widget type="my_namespace/slider_customproduct"}}
{{widget type="my_namespace/slider_featuredproduct"}}
...
هذا هل العمل - يظهر نموذج الاشتراك في النشرة الإخبارية حيث أريده-ولكن لدي شعور بأنه لا يعيد إدخال غير المحدد newsletter.left
كتلة ، بل خلق آخر newsletter.left
كتلة وترك معلقة واحدة معلقة.
وبالتالي, قضيتي هما:1.ما هو الخطأ في الطريقة التي أحاول بها وضع كتلة الاشتراك في النشرة الإخبارية للموضع على مستوى الموقع في نهاية content
بلوك?2.ما هي أنظف طريقة يمكنني تجاوز المواقع على مستوى الموقع من كتلة الاشتراك النشرة الإخبارية خصيصا للصفحة الرئيسية, ووضعه حيث أريد ذلك, عبر شمل تخطيط الصفحة في محرر الصفحة كمس الماجنتو?
وإذا أنا ذاهب عن ذلك خطأ ، لا تتردد في اسمحوا لي أن أعرف.الماجنتو لا يفشل أبدا في اسمحوا لي أن أعرف أنه أكثر تعقيدا مما أعرف.
المحلول
أنت على الطريق الصحيح.نقل كتلة موجودة هو أفضل القيام به مع أونسيتشيلد وإدراج ، ولكن انها أيضا بخير لإعادة كتلة كما كنت قد فعلت ذلك في كمس.كما استخدمت نفس الاسم ، يتم استبدال مثيل الكتلة الذي تم إنشاؤه مسبقا ، ولم يتم تقديم أي شيء حتى الآن في هذا الوقت.ولكن لا يزال بإمكانك تحسين قليلا ، على الرغم من أنه ليس من الضروري حقا إمهو:قم بإزالة الكتلة من التخطيط قبل إنشاء مثيل لها وإعادة إنشائها باسم مختلف.
<remove name="left.newsletter" />
<block type="newsletter/subscribe" name="content.newsletter" template="newsletter/subscribe.phtml"/>
هذا يترك مشكلة تحديد المواقع.المشكلة هي أن default
تتم معالجة المقبض قبل أي مقابض خاصة بالصفحة وهذا هو المكان الذي تتم فيه إضافة المحتوى الفعلي.لذلك في الوقت الذي insert()
يسمى ، الكتلة هو إدراج في النهاية ، ولكن في نهاية قائمة فارغة.
لا أرى طريقة عالمية سهلة لتأجيل إضافة الكتلة أو ضبط الفرز ، لذلك أقترح إضافة حاوية جديدة بعد ذلك content
في قوالب الصفحة (1column.phtml
الخ.) وإلحاق كتلة النشرة الإخبارية هناك.