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

[Góp ý] Gọi JS với theme khác default #1271

Closed
anhyeuviolet opened this issue Aug 12, 2015 · 17 comments
Closed

[Góp ý] Gọi JS với theme khác default #1271

anhyeuviolet opened this issue Aug 12, 2015 · 17 comments

Comments

@anhyeuviolet
Copy link
Contributor

Hiện tại các JS được đóng kèm với themes thay vì modules như trước.
Vậy sẽ phát sinh là một trang nào đó dùng modules ABC chẳng hạn, thì chỉ có abc.js trong theme default mà thôi.
Giả như người dùng cài một theme mới, modern chẳng hạn, thì hẳn nhiên theme này không có JS cho modules ABC đó thì cũng chịu chết vì nó không linh hoạt kiểm tra và gọi JS từ default như với TPL.
Có phương án nào cho vụ này chưa ạ ?
Điển hình như có một bạn test shop với theme riêng thì thiếu shops.js sinh lỗi.

@vuthao
Copy link
Contributor

vuthao commented Aug 12, 2015

từ phiên bản 4.0.22 trở đi, JS chúng tôi sẽ cho nó vào theme, chứ không còn ở module nữa.

Do đó nếu copy sửa file tpl, cần copy cả css, và js để việc sửa được đồng bộ. và không phụ thuộc.

@anhyeuviolet
Copy link
Contributor Author

Cái này em hiểu.
Có điều với người viết modules thì mặc định chỉ chèn JS cho theme default.
Nếu người dùng của họ cài modules đó mà ko dùng theme default thì như nào anh ?

@mynukeviet
Copy link

Em không biết đã xử lý chưa nhưng em hiểu ý của @anhyeuviolet
VD như đứng ở theme modern, mà dùng tpl của default, thì js (của module) cũng lấy mặc định từ default chứ không cần phải copy js từ default sang modern.

@anhtunguyen
Copy link
Contributor

Khi cài đặt kiểm tra theme. Nếu khác default thì đề nghị copy sang theme đang sử dụng

@anhyeuviolet
Copy link
Contributor Author

@hongoctrien trường hợp mà JS nhúng kèm với TPL thì không nói. Vì nó sẽ dò cấu hình theme để gọi TPL/JS cho hợp lý. Cái mình thắc mắc là các JS mặc định theo tên modules ấy. Cái đó gọi mặc định và có vẻ ko sửa được.
@anhtunguyen cái đó có thể xử lý bằng một chức năng nào đó trong quản lý theme ko anh ? Em nhớ là có copy block được thì làm tương tự với JS có ổn ko nhỉ ?

@vuthao
Copy link
Contributor

vuthao commented Aug 12, 2015

trong admin đã có chức năng đóng gói giao diện của module (ở phần Theme). Nếu sửa giao diện của module cần làm copy tất cả các file đóng gói này.

@anhtunguyen
Copy link
Contributor

Khi cài đặt module mới thì mình cho kiểm tra các file trong thư mục theme của gói module này. Nếu nó là default và theme đang sử dụng không phải default thì:

  1. Tự động copy sang theme đang sử dụng
  2. Khuyến cáo người cài đặt copy thủ công sang.

Để làm đc việc này cần sửa lại công cụ thêm module mới của hệ thống

@anhyeuviolet
Copy link
Contributor Author

Hình như anh @vuthao chưa hiểu ý em rồi ....
Cái này không phải tình huống chỉnh sửa theme mà là khi cài mới module anh ạ.

@anhyeuviolet
Copy link
Contributor Author

Gần như chính xác với ý của anh @anhtunguyen đấy ạ.
Vì thiếu là thiếu JS hệ thống ( tạm gọi như vậy ), tức là các JS mang tên của module đó. shops.js chẳng hạn.

@anhtunguyen
Copy link
Contributor

Người tạo module không thể tạo riêng files cho một theme nhất định không phải nhân hệ thống. Họ chỉ tạo trên theme default. Nên việc này anh nghĩ là cần thiết

@vuthao
Copy link
Contributor

vuthao commented Aug 12, 2015

Em nhớ cái js của module này gọi tương tự như gọi css của module.

@anhyeuviolet
Copy link
Contributor Author

Trường hợp nêu trong issue này, tới thời điểm hiện tại em test thì ghi nhận như sau:
TH1: Modules A đã cài vào hệ thống. Cài thêm theme AA.
Khi đó thì JS của module A là a.js sẽ không nạp được nếu trong theme AA thiếu a.js; không gọi từ mặc định.

TH2: Theme AA đã cài vào hệ thống. Cài mới module A. ( Chưa thử với tình huống cài lại ).
Khi đó, nếu trong theme AA thiếu JS là a.js thì sẽ gọi a.js từ theme default.

Hy vọng sẽ có phương án cho trường hợp này ạ.

@vuthao
Copy link
Contributor

vuthao commented Aug 13, 2015

@anhyeuviolet muốn module load được file js từ giao diện mặc định thì:

  • Giao diện AA của bạn không được có thư mục: themes/AA/modules/A.

Tóm lại khi load hệ hệ thống sẽ kiểm tra template của module ở đâu nó sẽ load ở đó. (template, js, css, image của module trong giao diện nó phải đi cùng nhau, thiếu là không được)

Nếu vấn không đúng bạn cài demo lên site nào đó để mình kiểm tra nhé.

@anhyeuviolet
Copy link
Contributor Author

Em hiểu vấn đề rồi và khá chính xác như anh @vuthao mô tả. Tức là chỉ khi nào thiếu cả bộ thì hệ thống mới gọi từ default.
Em thấy vẫn bất tiện vì khi chỉnh sửa giao diện ( như các theme đóng gói sẵn hoặc modules cũng vậy ) thì người ta chỉ can thiệp CSS hay TPL chứ ít ai mod cả JS nữa. Điều này vô tình gây khó cho người dùng ko chuyên.

Hy vọng có giải pháp nào đó tốt cho tình huống này. Cảm ơn anh @vuthao đã hướng dẫn. Giờ em mới thông chút xíu.

@hoanglongvnpt
Copy link

Tốt nhất chịu khó cop sang theme đang sử dụng, tránh bàn cãi mất lòng. Vụ này chính mình là người phát hiện ra điều này. Vãi chả cần hỏi chả cần góp ý nữa roài.!!

@anhyeuviolet
Copy link
Contributor Author

Ừm. Cái này còn dính dáng đến người phát triển theme và module nữa @hoanglongvnpt . Nên phải có giải pháp hợp lý.

@vuthao
Copy link
Contributor

vuthao commented Aug 16, 2015

update: vuthao@d53af98

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

5 participants