Tham khảo before_body_end không hoạt động - after_body_start không?


8

Bắt đầu nghĩ rằng tôi đã mất mojo của mình ...

Cả hai khối được đặt tên before_body_endafter_body_startcó loại core/text_list. Tuy nhiên, bố cục sau xml:

<layout>
    <default>
        <reference name="before_body_end">
            <block type="remarketing/ecjs" name="remarketing_ecjs" as="remarketing_ecjs" />
            <block type="remarketing/modal" name="remarketing_modal" as="remarketing_modal" />
        </reference>
    </default>
</layout>

Không xuất các khối con trong tài liệu tham khảo. Nếu tôi trao đổi before_body_end cho after_body_start, các khối sẽ hiển thị như mong đợi

Cả hai khối con đều mở rộng từ Mage_Core_Block_Text.

Bất cứ ý tưởng tại sao? Tôi nghĩ rằng tôi có Thứ Sáu ...

Câu trả lời:


23

Điều này nghe có vẻ ngu ngốc, nhưng dù sao tôi cũng sẽ hỏi: bạn đã kiểm tra kỹ xem tệp mẫu chính (ví dụ 1column.phtml) của chủ đề của bạn echo $this->getChildHtml('before_body_end')chưa?

Trên vanilla CE 1.7.0.2, mã này

<?xml version="1.0"?>
<layout version="0.1.0">
    <default>
        <reference name="after_body_start">
            <block type="core/template" name="test1" template="test.phtml" />
        </reference>
        <reference name="before_body_end">
            <block type="core/template" name="test2" template="test.phtml" />
        </reference>
        <reference name="content">
            <block type="core/template" name="test3" template="test.phtml" />
        </reference>
    </default>
</layout>

đầu ra khối kiểm tra của tôi ba lần.

Lý do tại sao nó có thể xuất hiện after_body_startnhưng không ở before_body_endtrên đỉnh đầu của tôi:

  1. Khối không được lặp lại trong tệp .phtml chính được sử dụng.
  2. Một số mã bỏ cài đặt before_body_endtrong khi xây dựng trang.
  3. Một số mã hủy cài đặt con cái before_body_endtrong khi xây dựng trang.

Tôi giả sử một sửa đổi page.xml(để khối không được khai báo) hoặc vấn đề bộ đệm có thể được loại trừ do đó là bạn. ;-)


1
Thật không may, tôi đã kiểm tra tất cả những điều đó. echo $this->getChildHtml('before_body_end')có mặt ... page.xml không được sửa đổi. Tôi sẽ tiếp tục đào. Tôi từ chối để cho cái này đánh bại tôi! :)
philwinkle

2
Câu trả lời cuối cùng là một biến đổi doanh nghiệp / default / layout / page.xml tập tin đó đổi tên before_body_endđể closure. Đó là một ngày thứ Sáu và vì một số lý do tôi đã không nghĩ đến doanh nghiệp / mặc định - cảm ơn vì đã chạy bộ nhớ của tôi!
philwinkle

1
@Matthias Zeis tôi đã sử dụng "after_body_start" và bây giờ nó hoạt động với tôi. Cảm ơn
Sarfaraj Sipai
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.