Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Xây dựng module emailtemplates cho NukeViet 4.6 #3701

Closed
hoaquynhtim99 opened this issue Dec 13, 2023 · 0 comments
Closed

Xây dựng module emailtemplates cho NukeViet 4.6 #3701

hoaquynhtim99 opened this issue Dec 13, 2023 · 0 comments

Comments

@hoaquynhtim99
Copy link
Contributor

hoaquynhtim99 commented Dec 13, 2023

Ý tưởng:

  • Chuyển toàn bộ các email gửi đi của hệ thống hiện tại thành dạng template, cho phép chỉnh sửa nội dung, tiêu đề email đi tùy ý theo nhu cầu của quản trị
  • Ngoài ra hỗ trợ thêm mẫu tùy chỉnh bất kỳ để dùng trong các modules/ứng dụng/ nhu cầu khác. Ví dụ như hệ thống email marketing đang sử dụng khoảng vài trăm mẫu email tùy chỉnh và tăng lên hàng ngày.

Code và hướng đã làm trên NukeViet 5.0:

  • Code tạo CSDL tại đây: Số ID từ 1-100 cho chuyên mục và 1-1000 cho mẫu email là giữ chỗ cho hệ thống. Người dùng thêm vào sẽ bắt đầu từ 1001 và 101
  • CSDL dữ liệu các mẫu email của hệ thống đã chuyển sang template như bên dưới. Phần này hiện tại NukeViet 4.6 đã bổ sung nhiều mẫu mới cũng như nội dung gửi email cũng khác nên cần rà soát bổ sung/chỉnh sửa lại.
  • Code tạo CSDL mẫu email, chuyên mục email khi cài đặt NukeViet tại đây
  • Code thêm/ xóa trường dữ liệu theo ngôn ngữ khi cài đặt ngôn ngữ mới tại đây
  • Module emailtemplates đã viết tại đây. Chức năng của module là thêm, sửa danh mục và mẫu email. Đối với ID>1000 (template) và >100 (cat) thì có label "Tùy chỉnh" và xóa được, các ID khác thì chỉ cho sửa. Chức năng gửi test một mẫu email.
  • Code bổ sung module trên vào bảng module khi tài đặt tại đây
  • Bổ sung 2 hàm phục vụ gửi email theo mẫu tại đây. Hàm nv_sendmail_from_template là cái cần dùng để thay thể cho hàm nv_sendmail cũ.
  • Tìm toàn bộ những chỗ dùng hàm nv_sendmail cũ thay thế bằng hàm mới. Ví dụ như chỗ này

Giải thích thêm:

Trong module emailtemplates có một cái khái niệm gọi là "Trình xử lý dữ liệu". Nó thực chất là các hook có sẵn trên hệ thống hoặc được người dùng thêm vào. Có vai trò:

  • Khi thêm/ sửa mẫu email ở module emailtemplates chọn nó thì hệ thống sẽ list ra các biến để người dùng đưa vào trình soạn thảo.
  • Khi dùng hàm nv_sendmail_from_template để gửi đi hệ thống sẽ gọi hàm nv_apply_hook để truyền dữ liệu vào trong các plugin đó để nó xử lý tạo ra các biến trong Smarty.

Các hook này đặt tại đây, tên của nó bắt đầu bằng emf_, tagname của nó là get_email_merge_fields. Ví dụ một hook emf hoàn chỉnh tại đây

1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant