跳到正文

Plugins

插件

与 WordPress 一样,功能通过插件来添加。不同之处在于,一个插件可以同时包含“管理后台端(Laravel)”和“网站端(Next.js)”。在管理后台启用后,从下一次构建起就会反映到网站上。

插件能做什么

Laravel

管理后台端

  • adminRoutes()

    管理后台页面

    在 /admin 下添加页面

  • menu()

    侧边栏菜单

    向管理后台菜单添加项目

  • dashboardWidget()

    仪表盘

    向仪表盘添加小组件

  • migrations()

    数据表

    创建插件专用的数据表

  • apiRoutes()

    公开 API

    添加供静态构建读取的 API

  • mcpRoutes() / mcpScopes()

    MCP 工具

    添加面向 AI 智能体的工具与权限

  • artisan() / schedule()

    命令与定时执行

    数据导入等定时任务

  • publicSettings() / frontendEnv()

    设置传递

    传给网站的设置值、环境变量

Next.js

网站端

  • routes/

    网站页面

    向公开网站添加一组新页面

  • nav / footerLinks

    导航

    向页眉、页脚添加链接

  • slots

    插入位置

    在文章下方、首页末尾等处插入组件

  • sections

    首页组件

    添加固定页面的区块类型

  • sitemap

    站点地图

    将新增页面写入 sitemap.xml

  • tracking

    点击统计

    添加 CTA 点击的分类规则

钩子 17

可以在安装、构建、插件启用、统计事件等时机插入处理(与 WordPress 的 action / filter 思路相同)。

  • cms.core.installed
  • cms.core.upgraded
  • cms.core.booted
  • cms.setup.completed
  • cms.plugin.installed
  • cms.plugin.enabled
  • cms.plugin.disabled
  • cms.plugin.updated
  • cms.build.before
  • cms.build.after
  • cms.frontend.env
  • cms.public_settings
  • cms.page.section_types
  • cms.mcp.tools
  • cms.mcp.scopes
  • cms.tracking.event_recorded
  • cms.tracking.conversion_recorded

插件示例

  • 内置

    活动落地页

    管理并统计从外部落地页工具导入的活动页面。

  • 内置

    Hello World

    插件模板。可以查看管理后台、API 与网站端的最小构成。

  • 已在自有媒体中运行

    地区目录

    按都道府县、市区町村、车站划分的列表页与详情页,乃至数据导入,一个插件全部搞定。

开发、安装、分发

  • php artisan plugin:make my-feature --frontend

    生成模板(管理后台端 + 网站端)

  • php artisan plugin:list

    已发现的插件及其状态

  • php artisan plugin:enable my-feature

    启用(同时创建数据表)

  • php artisan plugin:install plugin-my-feature.zip --enable

    放置分发用 zip 并启用

  • ./scripts/package.sh --plugin my-feature

    生成分发用 zip

插件结构
laravel/plugins/my-feature/
├── plugin.json          # id、名称、版本、所需核心
├── src/Plugin.php       # 注册管理后台、API、MCP、任务
├── routes/              # admin.php / api.php / mcp.php
└── database/migrations/

frontend/src/plugins/my-feature/
├── plugin.ts            # 导航、页脚、统计规则
├── plugin.server.ts     # 插槽、区块、sitemap
└── routes/default/      # 添加到网站的页面

停用后数据仍会保留(与 WordPress 相同)。已停用插件的页面不会包含在构建中。