SuperAPI AI 工具集

bagisto-theme-sections

编程与开发

查看项目

更新于 10-15 17:24

技能介绍

用途:该技能用于在 Bagisto 的 Appearance 区域工作,覆盖主题画廊与店铺前台所依赖的 Sections,以及分区编辑器、实时预览、草稿与发布行为、分区媒体等。旧 settings/themes CRUD 路由已移除,分区改为在实时预览旁编辑。

主要能力与放置:packages/Webkul/Theme 负责画廊与分区。管理端路径为 admin/appearance/themes(画廊,含已安装与可选主题)、admin/appearance/themes/{code}/sections(某渠道下某主题的编辑器);appearance-preview(店铺)是由草稿渲染的店铺前台,嵌在编辑器框架中。ThemeCatalog 提供画廊并回答 isInstalled()/isActive();SectionSchema 解析主题提供的分区类型及其字段 schema;SectionRepository 负责所有读写。

使用方式与规则:所有改动均为暂存,发布后才生效。内容按语言存于 theme_section_translations.draft_options,开关存于 theme_sections.draft_status,顺序存于 theme_sections.draft_sort_order;草稿值与线上值相同会被置空。hasDraft() 用于编辑器未保存计数与行标记。publishDraft() 提交三者并清理不再引用的媒体;discardDraft() 清除并同样清理。

限制与约束:店铺前台读线上值,预览读草稿,通过 SectionRepository::PREVIEWING 切换,绝不能来自查询参数;前台用 getRenderable(),预览用 getDraftedForPreview()。预览仅限拥有 appearance.sections 权限的管理员。写入必须经 sanitizeOptions()(StaticContent 会执行 sanitizeHtml() 与 sanitizeCss())。仅可自定义当前渠道启用的主题,且需服务端校验。分区类型需通过 SectionSchema::types() 或 $section->getTypeInstance() 获取,不得硬编码。每个渠道仅一个 footer_links。每次变更需清页面缓存,FPC 监听 section.create.after、section.update.after、section.delete.before。每个操作需派发前后成对事件。所有操作经 sectionOrFail() 防止已删除分区。媒体目录由 SectionObserver 在删除时清理。调用任何变更前须先使用 bagisto-change-verification。