Multiple Laravel theme
🔴 Xin chào m.n!
Hiện mình đang thay đổi giao diện cho website, về chức năng thì giao diện cũ và mới là như nhau. Trong quá trình thay đổi giao diện, có tạo ra file css để ghi đè và thay đổi các element ở view.
🔸 Giờ mình muốn dùng multiple, nghĩa là nếu khách hàng chọn giao diện mới thì sẽ cho họ dùng. Còn với khách hàng không chọn vẫn dùng đc giao diện cũ.
🔸 Rất mong được m.n trợ giúp hoặc cho keyword để tìm hiểu. Có demo thì càng tốt ạ. Cảm ơn nhiều!
6 CÂU TRẢ LỜI
Về cách implement bằng Laravel thì mình ko rõ, nhưng giải pháp chung đối với trường hợp sử dụng nhiều file CSS thì mình thường thấy như sau:
- File CSS 1 chứa theme cũ
- File CSS 2 chứa theme mới
- Bọc một class ngoài cùng cho file CSS 2, ví dụ:
.custom-theme body { }
.custom-theme section { }
.custom-theme .header { }
...
- Xử lý event switch giao diện đơn giản chỉ cần thêm class
.custom-theme
vào thẻ body hoặc root nào đó là được.
Cảm ơn b đã bình luận. Vấn đề nếu chỉ có css tác động lên theme thì có thể check dc, nhưng ngoài css ra thì tất các view đều đã tác động và sửa lên các element để thay đổi cả layout.
Laravel không biết có cho multiple theme không??
@Devsuccess Như bạn Khang nói là mình thấy ổn đó, bạn có thể chia sẻ cụ thể hơn về bài toán của bạn được ko? Vì cái theme
mà mọi người đang hiểu là kiểu như đổi tone màu của website, font chữ, cỡ chữ... ý là đổi style thôi chứ bố cục vẫn giữ nguyên.
Cảm ơn b đã quan tâm, của mình cụ thể là như sau:
- Project của mình hiện đang hoạt động với giao diện cũ trên nhánh master ở gitlab.
- Vẫn với project đó mình có thay đổi giao diện ở một nhánh mới trên git gồm: File css mới thay đổi để ghi đè các css cũ, thay đổi về bố cục layout, thay đổi về element trong html ở view.
Vấn đề giờ mình muốn đó là: Sẽ multiple theme, tức là sử dụng 2 theme hoạt động cùng một lúc tùy thuộc vào người dùng lựa chọn kiểu như facebook chọn giao diện mới khi sử dụng ở thời gian đầu, về sau nếu oke thì mình mới chuyển hoàn toàn sang giao diện mới đề dùng.
++ Lưu ý là project này đã có cả tính năng và logic đang hoạt động r.
Mình cảm thấy tốt nhất là làm ra 2 bộ views riêng biệt. Muốn chỉnh sửa, thêm bớt gì cũng dễ dàng hơn.
Đúng rồi b, mình đang làm như vậy là lưu trên 2 nhánh khác nhau ở git. Giờ làm sau để trên môi trường production, sẽ cho người dùng sử dụng giao diện tùy vào lựa chọn của khách hàng.
Tôi cũng đang làm theo cách này, quản lý view/css/js = thư mục đánh theo tên là đc mà.
@Devsuccess Như bạn Khang nói là mình thấy ổn đó, bạn có thể chia sẻ cụ thể hơn về bài toán của bạn được ko? Vì cái theme mà mọi người đang hiểu là kiểu như đổi tone màu của website, font chữ, cỡ chữ... ý là đổi style thôi chứ bố cục vẫn giữ nguyên.
Nếu bài toán của bạn cấp độ cao hơn đó là đổi cả layout hiển thị các kiểu thì mình bạn có thể tách hẳn mỗi theme
của bạn thành từng folder với gồm các file blade riêng rẽ. Hoặc kết hợp cả hai gồm cách thay theme theo CSS và cả render view blade riêng.
Theo mình thì còn tùy vào độ phức tạp của giao diện nữa.
Ví dụ nếu giờ bạn chỉ là muốn thay đổi số cột, chuyển sidebar từ trái qua phải, ... thì có thể tạo ra nhiều file css. Mỗi lần đổi theme thì sẽ link file css tương đương
Còn nếu giữa các theme khác nhau quá nhiều, thì mình nghĩ bạn nên tạo ra nhiều view, người dùng chọn view nào thì bạn trả về view đó
Theme của mình đã phức tạp ở việc tạo css mới để ghi đè css cũ, thay đổi layout và có tạo ra hai nhánh ở git để quản lý rồi, giờ mình chỉ muốn là laravel có hỗ trợ multiple theme ở trong thư mục resources, tạo 2 view và control nó dc k?
cách đây tầm 3 năm mình có làm 1 con yêu cầu như bạn, khi đó mình dùng package này nhé :3 bạn có thể tìm hiểu, hoặc tìm các package liên quan https://github.com/FaCuZ/laravel-theme
Vấn đề multiple theme này mình dùng Reactjs làm Frontend thì xử lý rất đơn giản (các component library đều hỗ trợ vụ này hoặc tự code tay ko khó), còn nếu dùng Laravel thì bó tay.