feat: 注入块拖拽排序(后台顺序即渲染顺序)+ theme.json 声明 inject_points + 主题卡片展示注入点

This commit is contained in:
ak
2026-08-11 23:25:34 +08:00
parent 3e3b9a2bfd
commit d9a6ca2959
16 changed files with 57 additions and 7 deletions
+1
View File
@@ -58,6 +58,7 @@ class ThemeManager
'description' => $manifest['description'] ?? '',
'author' => $manifest['author'] ?? '',
'screenshot' => $manifest['screenshot'] ?? null,
'inject_points' => $manifest['inject_points'] ?? null,
'active' => $name === $this->active(),
];
}
+6 -4
View File
@@ -51,16 +51,17 @@ class ThemeInject extends Page
$tabs[] = Tab::make(($i + 1).'. '.$label)
->schema([
Repeater::make("inject.{$point}")
->label('注入块(可多条,按排序渲染)')
->label('注入块(可多条,拖拽排序,按顺序渲染)')
->schema([
TextInput::make('title')->label('名称')->placeholder('如:百度统计')->columnSpan(2),
Textarea::make('html')->label('内容(HTML')->rows(3)->columnSpanFull(),
TextInput::make('sort')->label('排序')->numeric()->default(0)->columnSpan(1),
Toggle::make('enabled')->label('启用')->default(true)->columnSpan(1),
Toggle::make('enabled')->label('启用')->default(true),
])
->columns(3)
->defaultItems(0)
->collapsible()
->reorderable()
->reorderableWithButtons()
->addActionLabel('添加一条'),
]);
$i++;
@@ -90,6 +91,7 @@ class ThemeInject extends Page
$blocks = [];
foreach ($data['inject'] ?? [] as $point => $items) {
$order = 0;
foreach ($items ?? [] as $item) {
if (trim((string) ($item['html'] ?? '')) === '') {
continue;
@@ -98,7 +100,7 @@ class ThemeInject extends Page
'point' => $point,
'title' => $item['title'] ?? '',
'html' => $item['html'],
'sort' => (int) ($item['sort'] ?? 0),
'sort' => $order++,
'enabled' => (bool) ($item['enabled'] ?? true),
];
}