Jump to content
toanloau

Tìm hiểu override class và controller

Recommended Posts

Chào mọi người! Tôi là thành viên mới và cũng mới tìm hiểu prestashop được ít hôm.

Tôi có đọc nhiều diễn đàn thì thấy prestashop cho phép override các class và controller sẵn có.

Nhưng tôi chưa hình dung được là khi nào thì cần viết đè chúng, tại vì tôi thấy nguyên tắc trong 1 module cơ bản prestashop là: file .php trong thư mục module (tên file trùng với tên module) nó sẽ xử lý các tác vụ rồi chuyển qua file .tpl để hiển thị ra ngoài front-end. Ai có thể giải thích thêm cho tôi phần override với.

Xin cảm ơn!

Share this post


Link to post
Share on other sites

Chào  bạn toàn lo âu,

 

nhiều khi bạn muốn thay đổi 1 cái gì đấy trong core của prestashop (ví dụ 1 module luôn luôn giảm giá của sản phẩm đi $10 chẳng hạn) thì bạn phải sửa trong class và function tính giá đúng ko. nhưng như thế có thể lỗi hoặc gây khó khăn khi update version và đặc biệt là rất khó tích hợp vào module mà bạn muốn viết nên prestashop hỗ trợ override để tránh sửa trực tiếp vào file core và tiện cho việc viết trong module.

 

mình giải thích có vẻ hơi khó hiểu :D

Share this post


Link to post
Share on other sites

Chào  bạn toàn lo âu,

 

nhiều khi bạn muốn thay đổi 1 cái gì đấy trong core của prestashop (ví dụ 1 module luôn luôn giảm giá của sản phẩm đi $10 chẳng hạn) thì bạn phải sửa trong class và function tính giá đúng ko. nhưng như thế có thể lỗi hoặc gây khó khăn khi update version và đặc biệt là rất khó tích hợp vào module mà bạn muốn viết nên prestashop hỗ trợ override để tránh sửa trực tiếp vào file core và tiện cho việc viết trong module.

 

mình giải thích có vẻ hơi khó hiểu :D

Chân thành cảm ơn bạn! Tuy khó hiểu nhưng t đã có chút hình tượng và sẽ tìm hiểu thêm!

Bạn Quang Hà cho tôi hỏi: [Tôi đang viết module] Trong prestashop, ví dụ tôi muốn lấy tất cả các sản phẩm có trong shop và hiển thị trong phần back office (kể cả người dùng thiết lập multistore), nghĩa là lấy tất cả các sản phẩm không cần phụ thuộc vào language hay shop_id, category. Nhưng tôi kiếm trong nhiều class và controller thì không thấy hàm nào cho giá trị mà tôi mong muốn cả, Bây giờ, tôi đành viết sql query rồi thực thi, theo bạn, cách nào thấy ổn không? và có dễ bị lỗi khi version mới update không? Nếu k được, bạn có thể gợi ý cho tôi giải pháp không? Xin cảm ơn!

Share this post


Link to post
Share on other sites

nếu bạn tự viết sql thì mình nghĩ cũng bị ảnh hưởng khi prestashop nâng cấp version.

mình nghĩ là bạn nên viết lại 1 function getproducts (lấy lại function của prestashop và chỉnh sửa thêm)

Share this post


Link to post
Share on other sites

thuong thi trong may cai class se  co ham tuong tu, ban chi can loai bo Context::getContext()->language->id; trong sql WHERE la duoc. va tao ra function moi cho minh. Nen nho override de sau nay de nang cap nhe

Share this post


Link to post
Share on other sites

thuong thi trong may cai class se  co ham tuong tu, ban chi can loai bo Context::getContext()->language->id; trong sql WHERE la duoc. va tao ra function moi cho minh. Nen nho override de sau nay de nang cap nhe

Hiện tại mình đang gặp rắc rối trong việc override class với prestashop 1.5.6, m muốn override class trong thư mục module của mình luôn. Bạn nào có thể chỉ thư mục nào mà m lưu file override không? Chứ m viết mà prestashop báo là không tìm được class này. Nếu chi tiết thì m xin cảm ơn nhiều!

Share this post


Link to post
Share on other sites

Bua truoc minh co lam lau o nho. override trong module thi duong dan la mymodule/override/classes/ten_file.php

Nho xoa cache truoc khi chay nha. /cache/class_index.php.

Muc dich cung la chi la copy file cua ban ra thu muc override thui nen minh copy lun cho nhanh

Edited by thanhkha159684

Share this post


Link to post
Share on other sites

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More