Phát triển mô-đun: Bắt đầu
Sức mạnh thực sự của PolyCMS nằm ở tính mô đun của nó. Mô-đun (đôi khi được gọi là plugin) cho phép bạn mở rộng chức năng cốt lõi của CMS, thêm điểm cuối API mới, tạo giao diện quản trị tùy chỉnh hoặc tích hợp với các dịch vụ của bên thứ ba—tất cả mà không cần chạm vào một dòng mã lõi nào.
Hướng dẫn này sẽ hướng dẫn bạn cách xây dựng mô-đun đầu tiên của bạn.
1. Cấu trúc thư mục
Tất cả các mô-đun phải được đặt bên trong thư mục modules/ ở thư mục gốc của bản cài đặt PolyCMS của bạn. Chúng tuân theo quy ước không gian tên Vendor/ModuleName.
Hãy tạo một mô-đun có tên là BlogEnhancer của nhà cung cấp Polyx.
modules/
└── Polyx/
└── BlogEnhancer/
├── module.json # The Module Manifest
└── src/
└── BlogEnhancerServiceProvider.php
2. Bản kê khai mô-đun (module.json)
Mỗi mô-đun phải có tệp module.json trong thư mục gốc. Lõi ModuleManager phân tích tệp này để khám phá mô-đun, đăng ký không gian tên tự động tải PSR-4 và khởi động Nhà cung cấp dịch vụ của nó.
Tạo modules/Polyx/BlogEnhancer/module.json:
{
"name": "BlogEnhancer",
"vendor": "Polyx",
"version": "1.0.0",
"description": "Adds extra features and SEO tools to the core blog.",
"provider": "Modules\\Polyx\\BlogEnhancer\\BlogEnhancerServiceProvider",
"autoload": {
"psr-4": {
"Modules\\Polyx\\BlogEnhancer\\": "src/"
}
},
"sandbox": false
}
3. Điều khiển từ xa gốc đáng tin cậy so với Sandbox
Lưu ý khóa "sandbox": false trong tệp kê khai ở trên. PolyCMS triển khai kiến trúc mô hình kép:
Bản địa đáng tin cậy (sandbox: false): Mô-đun này được thực thi nguyên bản trong lõi Laravel. Nó có quyền truy cập trực tiếp vào cơ sở dữ liệu, hệ thống tệp và có thể thay đổi quy tắc hiển thị thông qua Nhà cung cấp dịch vụ. Sử dụng tính năng này để tích hợp hệ thống sâu (như Bộ đệm, mô-đun sao lưu hoặc Cổng thanh toán phức tạp).
Sandbox Remote (sandbox: true): Mô hình thực thi không tin cậy. Mô-đun này hoạt động ngoài băng tần và chỉ giao tiếp qua điểm cuối /api/v1 hoặc /graphql bằng cách sử dụng mã thông báo Sanctum được Quản trị viên phê duyệt. Sử dụng tính năng này để tích hợp bên thứ 3 (như đồng bộ hóa Mailchimp, trình kết nối CRM hoặc tạo AI).
Đối với hướng dẫn này, chúng tôi đang xây dựng mô-đun gốc đáng tin cậy.
4. Nhà cung cấp dịch vụ
Nhà cung cấp dịch vụ là điểm vào cho mã PHP của bạn. Đây là nơi bạn đăng ký các tuyến đường, liên kết các singleton và kết nối với các sự kiện cốt lõi.
Tạo mô-đun/Polyx/BlogEnhancer/src/BlogEnhancerServiceProvider.php:
<?php
declare(strict_types=1);
namespace Modules\Polyx\BlogEnhancer;
use Illuminate\Support\ServiceProvider;
use App\Facades\Hook;
class BlogEnhancerServiceProvider extends ServiceProvider
{
public function register(): void
{
// Bind classes into the service container
}
public function boot(): void
{
// 1. Load routes (if you have them)
// $this->loadRoutesFrom(__DIR__ . '/routes/api.php');
// 2. Load Views (if you have them)
// $this->loadViewsFrom(__DIR__ . '/../resources/views', 'blog-enhancer');
// 3. Register Hooks
$this->registerHooks();
}
private function registerHooks(): void
{
// Example: Add a custom menu item to the Admin panel
Hook::addAction('admin.menu.build', function ($menuRegistry) {
$menuRegistry->addChild('content', [
'key' => 'blog_enhancer_tools',
'label' => 'SEO Tools',
'url' => '/admin/blog-enhancer',
'icon' => 'SparklesIcon',
'order' => 90
]);
});
}
}
5. Kích hoạt Mô-đun
Bây giờ giàn giáo của bạn đã hoàn tất, hãy đăng nhập vào Bảng quản trị PolyCMS và điều hướng đến Cài đặt > Mô-đun.
Bạn sẽ thấy mô-đun BlogEnhancer của mình được liệt kê. Nhấp vào Bật.
Hệ thống cốt lõi sẽ tải lại và vì chúng tôi đã kết nối với admin.menu.build, bạn sẽ thấy ngay liên kết "Công cụ SEO" mới xuất hiện trong thanh bên dưới phần Nội dung!
Các bước tiếp theo
Bây giờ mô-đun của bạn đang khởi động, bạn có thể mở rộng nó bằng cách:
Tạo các thành phần Vue quản trị tùy chỉnh
Đăng ký [Điểm cuối API] mới(/rest-api-xác thực)
Đưa giao diện người dùng thông qua Hệ thống widget