Tôi tò mò về việc xây dựng các thành phần CMS trên đầu Joomla! Khung chủ yếu vì tôi muốn các thành phần của mình hoạt động như các ứng dụng độc lập.
Đây có phải là có thể làm mà không có hack? Nếu không, có cách nào để tiếp cận điều này?
Tôi tò mò về việc xây dựng các thành phần CMS trên đầu Joomla! Khung chủ yếu vì tôi muốn các thành phần của mình hoạt động như các ứng dụng độc lập.
Đây có phải là có thể làm mà không có hack? Nếu không, có cách nào để tiếp cận điều này?
Câu trả lời:
Câu hỏi này là không thể trả lời một cách thuyết phục, nhưng tôi nghĩ rằng thật đáng để thực hiện một cú đâm vào một số phần phổ biến nhất có thể khiến bạn vấp ngã trong việc chuyển mã (và sẽ có khá nhiều).
Trước khi đi vào chi tiết cụ thể, tất cả những điều này có thể được coi là một hack, tùy thuộc vào quan điểm của bạn. CMS và Framework rất khác nhau từ quan điểm của một thành phần. CMS xác định cấu trúc chính xác để sử dụng. Khung được thiết kế để cho phép bạn tùy chỉnh cách ứng dụng của bạn chạy và tương tác. Framework chắc chắn có thể được thiết kế để chạy các thành phần từ CMS, nhưng tại một thời điểm nhất định, đây chỉ là bạn tạo lại CMS, điều này dường như vô nghĩa.
Đầu tiên, câu trả lời siêu ngắn và đơn giản: mọi cách mà thành phần của bạn tương tác với CMS cần được làm lại, bạn sẽ cần thêm bộ định tuyến và có thể bạn phải thêm không gian tên hoặc trình tải tự động mới.
Hãy bắt đầu với nửa sau của điều này. Điều lạ lùng là bạn đang sử dụng trình soạn thảo với Khung công tác Joomla, vì vậy bạn có thể gửi ngân hàng cho trình tải tự động của nhà soạn nhạc tải lên các lớp khi bạn cần. Điều này được thiết kế để chạy trong không gian tên và tải dựa trên đó, vì vậy thành phần của bạn sẽ không tự động tải. (Tôi đoán về điều này, vì vậy nếu có cách nào tốt hơn, ai đó hãy bình luận.) Điều này có nghĩa là bạn phải thêm trình tải tự động của riêng mình cho các lớp MVC hoặc viết lại chúng trong một không gian tên.
Thứ hai, bạn sẽ cần thêm tệp bộ định tuyến của riêng mình vào ứng dụng. Vì bạn không còn có trình quản lý menu, bạn sẽ cần tạo lại điều này bằng lớp Router. Điều này thực sự khá đơn giản để ánh xạ các url tới bộ điều khiển, nhưng bạn phải chắc chắn rằng điều này có trong ứng dụng.
Cuối cùng, bạn phải hỗ trợ bất kỳ tính năng CMS nào mà bạn sử dụng trong thành phần. Một trong những lớn nhất mà tôi nghĩ đến là JFactory
. Bất kỳ tập lệnh nào gọi lớp đó để lấy phiên, cơ sở dữ liệu hoặc tài liệu sẽ không hoạt động. (Trừ khi bạn chuyển lớp đó qua và xác định lại các móc của nó cho phù hợp với ứng dụng của bạn.
Bạn có gọi JComponentHelper
ở đâu không? Bạn sẽ phải thêm hỗ trợ cho điều đó. Bạn có gọi cho một người trợ giúp khác cho một phần mở rộng cốt lõi như com_content hoặc com_users không? Điều đó sẽ không làm việc nữa.
Bạn có thể nhận được một số tiện ích mở rộng đơn giản chạy trên khung một cách dễ dàng. Những người nối vào CMS theo nhiều cách có thể yêu cầu cơ bản xây dựng lại CMS để thực hiện tất cả các phần. Phần này thực sự phụ thuộc vào phần mở rộng.
Cuối cùng, ở giai đoạn này, rất có thể sẽ liên quan đến một số loại hack hoặc sao chép / dán mã tạo thành CMS vào khung mà bạn cần.
Tôi tin rằng CMS sẽ trở nên phù hợp hơn với cấu trúc của khung (tức là sử dụng trình soạn thảo, sử dụng không gian tên, v.v.) sẽ giúp việc này dễ dàng hơn. Ngay bây giờ, nó là một nhiệm vụ khá khó khăn, mặc dù.