أدخل كتلة غير محددة في صفحة نظام إدارة المحتوى (في موضع معين)

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

سؤال

أنا بناء موضوع مخصص ، وذلك باستخدام قاعدة / الافتراضي كما ، حسنا ، الأساس.أريد أن استخدام بنيت الماجنتو في وظيفة الاشتراك النشرة الإخبارية ، ولكن أنا لا أريد أن تظهر في 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 الخ.) وإلحاق كتلة النشرة الإخبارية هناك.

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