01/10/2018, 17:31

Nhiều layout trong một module

Hôm nay Góc Kinh Nghiệm sẽ giới thiệu cùng các bạn cách sử dụng nhiều layout cho một module trong Joomla!. Giả sử module tên mod_articles_list được đặt trong thư mục /root/modules/mod_articles_list có cấu trúc như sau: /root/modules/mod_articles_list/ --- mod_articles_list.xml --- ...

Hôm nay Góc Kinh Nghiệm sẽ  giới thiệu cùng các bạn cách sử dụng nhiều layout cho một module trong Joomla!.

Giả sử module tên mod_articles_list được đặt trong thư mục /root/modules/mod_articles_list có cấu trúc như sau:

/root/modules/mod_articles_list/

--- mod_articles_list.xml

--- mod_articles_list.php

--- helper.php

--- index.html

---/tmpl/

--- ---/default.php

--- ---/detail.php

--- ---/index.html

Cấu trúc thư mục và tập tin trên chứa 2 tập tin layout tên default.php và detail.php trong thư mục tmpl. Mỗi tập tin layout có cách hiển thị dữ liệu khác nhau.

Bây giờ Góc Kinh Nghiệm hướng dẫn bạn cách chọn một trong 2 layout đó trong phía administrator dựa vào cách thiết lập paramter.

  • Bước 1: mở tập tin  mod_articles_list.xml thêm vào trước thẻ đóng </extension> đoạn code bên dưới
<config>
    <fields name="params">
        <fieldset name="basic">
            <field
                name="layout"
                type="filelist"
                default=""
                label="MOD_ARTICLES_LIST_LAYOUT"
                description="MOD_ARTICLES_LIST_LAYOUT_DESC"
                directory="modules/mod_articles_list/tmpl"
                stripext="1"
                hide_default="1"
                hide_none="1"
                filter=".php$"
                exclude="^_"/>
        </fieldset>
    </fields>
</config>

Đoạn code trên tải tất cả tên của layout nằm trong thư mục tmpl vào một drop-down list (hình bên dưới), tham khảo thêm tại http://docs.joomla.org/Filelist_parameter_type

  • Bước 2: mở tập tin mod_articles_list.php, kiểm tra xem đoạn code bên dưới có chưa, nếu chưa có thì thêm vào
require JModuleHelper::getLayoutPath('mod_articles_list', $params->get('layout', 'default'));

Chú ý: parameter tên ‘layout’ trong đoạn code này phải giống với thuộc tính name=”layout” ở tập tin mod_articles_list.xml bạn đã thêm ở bước 1

  • Bước 3: sau khi nhấn nút lưu 2 tập tin ở bước 1 & 2, bạn vào phía administrator, chọn module tên mod_articles_list, ở phần thiết lập parameter bạn sẽ thấy một drop-down list chứa 2 layout tên default và detail cho bạn chọn lựa, kết quả như hình bên dưới

Chọn 1 trong 2 rồi nhấn nút Save

  • Bước 4: ra phía fronted (site) để xem kết quả.

Bài post này được viết trên Joomla! 1.7

Góc Kinh Nghiệm chúc các bạn thành công! :roll:


0