2012-03-20 31 views
5

Tôi có một bản cài đặt Magento đơn chạy hai trang web khác nhau. Một người bán sách điện tử và người khác thì không và vì vậy nhóm kinh doanh muốn xem liên kết "Nội dung tải xuống của tôi" bị xóa khỏi khối điều hướng của khách hàng trong khu vực Tài khoản của tôi của ứng dụng.Có thể xác định cập nhật bố cục Magento trên cơ sở mỗi cửa hàng

Tôi có thể thấy liên kết được xác định trong thiết kế/frontend/base/layout/downloadable.xml nhưng không thể thấy bất kỳ cách nào được xác định sẽ cho phép tôi vô hiệu hóa liên kết trên một trong các trang web. Rõ ràng, tôi có thể ghi đè XML này để tắt toàn cầu nhưng tôi cần sự thay đổi được giới hạn trong phạm vi.

Làm cách nào để xác định ghi đè bố cục trên một trang web hoặc lưu trữ trong cài đặt Magento đa trang web?

Dựa trên những phản hồi dưới đây, tôi đã làm những điều sau đây:

Tạo ứng dụng/local/Mage/khách hàng/Khối/tài khoản/Navigation.php và thêm một phương pháp removeLink() mà không có trong mã lõi .

Nếu tôi thực hiện thay đổi sau trong local.xml, liên kết tải xuống được lấy ra:

<?xml version="1.0" encoding="UTF-8"?> 
<layout> 
    <default> 
     <remove name="catalog.compare.sidebar"/> 
    </default> 
    <customer_account> 
     <reference name="customer_account_navigation"> 
      <action method="removeLink" translate="label" module="downloadable"> <name>downloadable_products</name></action> 
     </reference> 
    </customer_account> 
</layout> 

Nhưng, nếu cố gắng để nhắm mục tiêu một cửa hàng cụ thể, nó không phải là. Ví dụ.

<?xml version="1.0" encoding="UTF-8"?> 
<layout> 
    <default> 
     <remove name="catalog.compare.sidebar"/> 
    </default> 
    <STORE_mm> 
    <customer_account> 
     <reference name="customer_account_navigation"> 
      <action method="removeLink" translate="label" module="downloadable"> <name>downloadable_products</name></action> 
     </reference> 
    </customer_account> 
    </STORE_mm> 
</layout> 
+3

nếu bạn sử dụng các chủ đề khác nhau thì điều này thực sự dễ dàng –

Trả lời

9

Như Anton đã đề xuất, hãy đặt chủ đề bố cục mới cho cửa hàng của bạn. Một cách tiếp cận khác cho mọi trang web + phạm vi lưu trữ rộng sẽ là sử dụng xử lý bố cục cửa hàng - nó giống như một xử lý <default> được áp dụng cho mỗi cửa hàng. Nếu mã cửa hàng của bạn (trong Quản lý cửa hàng> Chế độ xem cửa hàng) là 'foo', chốt xử lý bố cục cửa hàng sẽ là <STORE_foo>.

Ref. Mage_Core_Controller_Varien_Action::addActionLayoutHandles()

+0

Tôi đang cố gắng áp dụng phương pháp tiếp cận phạm vi cửa hàng này và đã cập nhật câu hỏi để phản ánh. Hai trang web rất giống nhau vì vậy có nhiều chủ đề không lý tưởng trong trường hợp này. Tuy nhiên, quy tắc STORE_x dường như không được xử lý. Bạn có bất cứ ý tưởng? –

+1

Các xử lý '' chỉ là, xử lý. Họ không đủ điều kiện các tay cầm khác; chúng chỉ có thể sử dụng để cập nhật bố cục toàn bộ cửa hàng. Với ví dụ được cập nhật của bạn, bạn sẽ cần khai báo một chủ đề bố cục mới cho cửa hàng 'mm' của bạn, nhưng toàn bộ chủ đề đó sẽ chỉ chứa tệp local.xml, cần chứa tất cả các chỉ thị local.xml" toàn cầu ". Tùy chọn khác của bạn là tạo một mô-đun tùy chỉnh mà chỉ cần thêm một tệp sơ đồ bố trí mới vào hệ thống và chỉ cần sử dụng nó như một tệp cục bộ. – benmarks

+0

Mất cách tiếp cận chủ đề riêng biệt kết hợp với thay đổi để thêm phương thức removeLink hoạt động tốt - thx –

2

Tạo chủ đề khác cho trang web này.
Tạo ứng dụng/thiết kế/lối vào/mặc định/trang web1/layout/local.xml
và app/design/frontend/default/website2/layout/local.xml
Nơi bạn có thể thực hiện các thay đổi cần thiết cho bố cục có thể tải xuống. Điều này được mô tả trong tính năng Magento.

+0

+1 mục này. Tôi đã tìm thấy là cách tiếp cận sạch nhất để quản lý nhiều chủ đề cửa hàng là giữ cho chúng bị cô lập, với dự phòng để mặc định cho bất kỳ điều gì ảnh hưởng đến nhiều phạm vi cửa hàng. Cũng khuyên bạn nên làm điều đó trong một gói riêng biệt từ mặc định, ví dụ: app/design/frontend/mypackage/mytheme, và app/design/frontend/mypackage/mặc định tương ứng. – DWils

Các vấn đề liên quan