2012-04-10 4 views
9

Tôi có trong CMS-> trang "trang chủ" tệp. Trong nội dung tôi đang viết dòng như sau:Trang CMS thêm khối magento

{{block type="myfolder/newfile" template="myfolder/newfile.phtml"}} 

Tôi muốn hiển thị trong tệp nội dung newfile.phtml. Những gì tôi đang làm sai?

tập tin mới của tôi là dưới: Ứng dụng \ thiết kế \ frontend \ default \ themeas \ template \ Myfolder \ newfile.phtml

Trả lời

21

Bạn cần phải cung cấp cho khối bạn một cái tên. Đó là cách Magento sẽ tham khảo khối. Ngoài ra, loại khối của bạn phải hợp lệ để khối hiển thị. Đối với khối mặc định thử sử dụng type = "lõi/mẫu"

mã mới của bạn sẽ trông như thế này:

{{block type="core/template" name="my.block.name" template="myfolder/newfile.phtml"}} 

Một lưu ý về các thuộc tính type, không thực sự là một cấu trúc thư mục/tập tin của nó, chứ không phải, đó là một URI được ánh xạ với trình nạp tự động Magento. "Core" liên quan trở lại lớp Mage_Core_Block_Core (trong thư mục app/code/core/Mage/Core) và sau đó thông tin sau dấu gạch chéo liên quan đến các thư mục bên trong thư mục đó. Vì vậy, type = "core/template" giải quyết cho lớp này Mage_Core_Block_Core_Template được đặt tại app/code/core/Mage/Core/Block/Template.php. Tất cả thuộc tính type đang làm là nói cho Magento biết phương thức nào bạn cần nạp bên trong khối của bạn.

Một vài loại khối khác bạn có thể thử là:

Đối với Danh sách sản phẩm: Danh mục /product_list

Đối Chức năng Text (khối tự động render ra khối đứa trẻ): lõi/text_list

Đối với các khối danh mục: danh mục/danh mục_view

Có nhiều hơn nữa, một cách tốt để tìm những cái mới là xem xét một khối có hành động tương tự với những gì bạn đang cố gắng làm, và tìm nơi nó được định nghĩa trong XML.

+0

thuộc một trong các trang web của tôi nó làm việc mà không tên cho đến khi phiên bản 1.9.2.3 như '' '{{block type =" catalogue/product_list "category_id =" 8 "template =" catalogue/product/featured.phtml "}}' '' – lrkwz

+2

Đừng quên cho phép khối hoặc nó sẽ không hiển thị (Magento phiên bản 1.9+) hệ thống-> quyền-> khối – Mike

6

Nếu bạn muốn vượt qua các biến để các khối, bạn có thể làm điều gì đó như:

{{block type="core/template" name="my.block.name" myvariable="5" template="myfolder/newfile.phtml"}} 
3

tôi muốn cung cấp một sự lựa chọn:

Những câu trả lời ở trên làm việc tốt, tuy nhiên đó là cá nhân của tôi ưu tiên không chèn khối trong nội dung của trang CMS vì khách hàng có thể (và có) đã xóa dòng quan trọng này khi cố chỉnh sửa văn bản và nội dung bằng WYSIWYG.

Bạn có thể thêm như sau trong các Layout> Cập nhật Giao diện XML phần của một trang CMS:

<reference name="content"> 
    <block after="-" type="your/block_type" name="block.name" template="your/block/template/file.phtml"/> 
    <action method="insert" ifconfig="your/block_type"> 
     <block>block.name</block> 
    </action> 
</reference> 

Bằng cách này, khách hàng ít có khả năng chỉnh sửa tab này!

Hy vọng điều này sẽ giúp bất kỳ ai khác có vấn đề này!

3

Kể từ Magento 1.9.2.2 hoặc bản vá tương đương, bạn cũng cần cấp quyền cho khối mới.Bạn làm điều này trong phần phụ trợ: Hệ thống | quyền | khối

Tức là nếu bạn muốn hiển thị:

{{block type="catalog/product_bestseller" name="krillo.bestseller" template="catalog/product/bestseller.phtml"}} 

Thêm tên khối của bạn "Danh mục/product_bestseller" và thiết lập các trạng thái để "được phép"