feat: 注入块拖拽排序(后台顺序即渲染顺序)+ theme.json 声明 inject_points + 主题卡片展示注入点
This commit is contained in:
@@ -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(),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -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),
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user