Magento Core: tên khối giống hệt nhau trong một tay cầm


7

Tôi muốn thay đổi mẫu với tên khối "continent.remember.me", nhưng có hai khối có cùng tên dưới cùng một điều khiển:

ứng dụng / thiết kế / frontend / cơ sở / mặc định / layout / continent.xml

<checkout_onepage_index>
    <reference name="checkout.onepage.login">
        <action method="setTemplate"><template>persistent/checkout/onepage/login.phtml</template></action>
        <block type="persistent/form_remember" name="persistent.remember.me" template="persistent/remember_me.phtml" />
    </reference>
    <reference name="checkout.onepage.billing">
        <action method="setTemplate"><template>persistent/checkout/onepage/billing.phtml</template></action>
        <block type="persistent/form_remember" name="persistent.remember.me" template="persistent/remember_me.phtml" />
        <block type="core/template" name="persistent.remember.me.tooltip" template="persistent/remember_me_tooltip.phtml" />
    </reference>
</checkout_onepage_index>

Tôi đã tạo một tệp local.xml với các nội dung sau:

ứng dụng / thiết kế / frontend / huyền thoại / mặc định / layout / local.xml

<checkout_onepage_index>
    <reference name="persistent.remember.me">
        <action method="setTemplate"><template>mytheme/persistent/remember_me.phtml</template></action>
    </reference>
</checkout_onepage_index>

Và mọi thứ hoạt động tốt; Chỉ mẫu của tham chiếu cuối cùng ("checkout.onepage.billing") được cập nhật, đó chính xác là những gì tôi muốn, nhưng tôi không chắc tại sao nó lại làm điều này. Tôi có ấn tượng rằng tên khối phải luôn là duy nhất. Đây có phải là một lỗi trong Magento? Điều gì có thể xảy ra với mã này nếu tôi nâng cấp Magento?

Câu trả lời:


5

Erfan đúng là html được xuất ra hai lần, một lần là con của 'checkout.onepage.login' và một lần là con của 'checkout.onepage.billing'

Do đó, có hai khối con có cùng tên. Mỗi mẫu có thể có một mẫu khác nhau và mỗi mẫu được hiển thị như một đứa con của cha mẹ.

Để thay đổi khối liên tục trong một trong hai khối cha, bạn cần nhắm mục tiêu trực tiếp vào khối cha, chẳng hạn như:

<checkout_onepage_index>
    <reference name="checkout.onepage.login">
            <block type="persistent/form_remember" name="persistent.remember.me" template="my/custom/template.phtml" />
        </reference>
</checkout_onepage_index>

Ở trên sẽ chỉ thay đổi mẫu trong khối đăng nhập.

Nếu bạn chỉ nhắm mục tiêu khối con 'kiên trì.remember.me' thì magento dường như chỉ thay đổi sự xuất hiện của khối tìm thấy đầu tiên. Bắt đầu đầu cơ: Điều này rất có thể xảy ra theo thứ tự hoặc alpha, với 'checkout.onepage.billing' xuất hiện theo thứ tự abc trước 'checkout.onepage.login', trong bất kỳ mảng nào được sử dụng để lưu trữ khối bên trong. Thực tế là .billing được hiển thị sau .login chỉ làm cho nó trông giống như nó chỉ thay đổi lần xuất hiện thứ hai. :) Kết thúc đầu cơ


4

Không, đây không phải là lỗi. Tôi cá là chỉ có một khối trên trang web ngoài "checkout.onepage.billing" và "checkout.onepage.login".

Vì vậy, chỉ có một khối "kiên trì.remember.me".


Nhưng HTML được xuất ra hai lần? Ngoài ra, nếu tôi thay đổi bất cứ điều gì trong ứng dụng / thiết kế / frontend / huyền thoại / mặc định / huyền thoại / kiên trì / nhớ_me.phtml chỉ có thay đổi cuối cùng? Nếu tôi thay đổi ứng dụng / thiết kế / frontend / base / default / continent / memory_me.phtml thì chỉ có một thay đổi đầu tiên ...
Erfan

Một ví dụ khác trong đó hai khối có cùng tên được xuất ra trên cùng một trang nằm trên giỏ hàng trong phần xử lý checkout_cart_index. Cả checkout.cart.top_methods và checkout.cart.method đều có một khối có tên là checkout.cart.methods.onepage.
pcronin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.