Nhiều tệp bố cục local.xml trong một gói


13

Nói rằng có hai chủ đề trong một gói:

  • Cơ sở (Đặt làm mặc định)
  • Trẻ em (Đặt làm chủ đề chính)

Cả hai đều chứa tệp local.xml trong thư mục bố cục - Chỉ có tệp local.xml từ chủ đề Con sẽ được tải, do đó, mọi cập nhật CSS, JS hoặc bố cục trong Base local.xml đều không được tải.

Không sử dụng page.xml (vì vậy cho phép có cùng chức năng như local.xml nhưng có tính kế thừa), làm thế nào tôi có một tệp xml cho Base và một cho cả hai được gọi?

Điều này có yêu cầu xây dựng một mô-đun với mục đích duy nhất là thêm tệp xml có thể sử dụng được không (ví dụ: base-local.xml)?

Câu trả lời:


9

Bạn đã đúng và đây là cách tiếp cận hợp lệ & được sử dụng cho các trang web có nhiều chủ đề. Có một số tùy chọn bổ sung (ít được biết đến, ít được sử dụng) có thể được sử dụng để cập nhật bố cục áp dụng cho các phạm vi cửa hàng khác nhau: tay cầm cửa hàng và tay cầm chủ đề.

Từ siêu lớp điều khiển hành động Mage_Core_Controller_Varien_Action(liên kết) :

public function addActionLayoutHandles()
{
    $update = $this->getLayout()->getUpdate();

    // load store handle
    $update->addHandle('STORE_'.Mage::app()->getStore()->getCode());

    // load theme handle
    $package = Mage::getSingleton('core/design_package');
    $update->addHandle(
        'THEME_'.$package->getArea().'_'.$package->getPackageName().'_'.$package->getTheme('layout')
    );

    // load action handle
    $update->addHandle(strtolower($this->getFullActionName()));

    return $this;
}

Đối với cửa hàng có mã 'deutsch' và cấu hình chủ đề của gói 'mặc định', chủ đề 'tiếng Đức', các xử lý sau sẽ áp dụng cho hầu hết mọi chế độ xem, vì hầu hết các chế độ xem đều sử dụng chúng:

<STORE_deutsch>
<THEME_frontend_default_german>

Bằng cách thực hiện, các tay cầm này có thể được sử dụng theo cách tương tự như <default />.


À, thật hữu ích khi biết - Tôi nghĩ trường hợp sử dụng của tôi hơi khác so với những gì bạn đang đề xuất - Bạn vẫn sẽ có một tệp localDB trong một chủ đề 'cơ sở' nhưng sau đó sử dụng <THEME_frontend_default_german> để nhắm mục tiêu các chủ đề con từ chủ đề cơ sở localDB - Không có một tệp localDB riêng trong mỗi chủ đề con? Là chính xác hay tôi hiểu lầm?
Glo

Đó là nó. Thật không may, các thẻ điều khiển được nhắm mục tiêu áp dụng rộng rãi, do đó, không có cách nào để nói, "cập nhật mẫu khối gốc cho trang catalog_product_view trong cửa hàng X". Tuy nhiên, nếu lưu trữ X cần một tệp JS tùy chỉnh trên tất cả các trang, thì có thể sử dụng <STORE_x><action method="addJs" block="head"><file>custom/js.js</file></action></STORE_x>.
đánh dấu

Cảm ơn rất nhiều, trong khi không cụ thể những gì tôi đã nghĩ, đó là một số thông tin mới thú vị, chúc mừng.
Glo
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.