spanjaan / wn-snowflake-plugin
雪花插件是Winter CMS的动态内容管理器
Requires
- php: >=8.0
- composer/installers: ~1.0
Replaces
- skripteria/wn-snowflake-plugin: ~1.0.0
README
分支信息和致谢
本插件是从skripteria/snowflake分支到spanjaan/snowflake。这个分支旨在增强和扩展原始插件的功能,以更好地满足Winter CMS中各种用户类型的需求。
向所有贡献者和Winter CMS社区表示衷心的感谢,感谢他们持续的支持和灵感!
版本历史
- 1.0.5: 初次发布
使用Composer安装
要安装雪花,请运行以下命令
composer require spanjaan/wn-snowflake-plugin php artisan winter:up
为什么在CMS中还需要一个新的"CMS"?
在实际场景中,至少需要考虑四种不同的用户类型
- 技术开发者: 拥有构建自定义功能的一些知识。
- 网页设计师: 主要对网页设计感兴趣,而不是后端开发。
- 对网页感兴趣的终端用户: 拥有事物应该如何看起来的一幅图景,并努力实现它。不怕尝试定制,类似于典型的WordPress用户。
- 非技术用户: 由于工作或业务需求,偶尔需要做一些内容编辑。
前三种用户类型通常在讨论CMS应该如何工作时会被考虑。然而,最后一种用户类型往往被忽视。当为付费客户开发网站时,非技术用户将是最终你最可能与之打交道的人。
因此,您需要使内容管理无懈可击,并隐藏除了需要管理的特定内容之外的所有内容。
雪花通过利用Winter CMS后端框架的力量来解决这个问题。
使用雪花
安装完成后,您首先需要将雪花组件添加到您希望与之一起使用的任何CMS布局中。这将启用布局本身以及任何使用此布局的页面的雪花Twig过滤器。
在这些CMS页面上,您现在可以使用'sf'
Twig过滤器添加内容变量,例如
<h1>{{ 'my_headline' | sf('text', 'My awesome headline', 'Main headline of this page.') }}</h1>
第一部分('my_headline'
)是雪花键,用于渲染内容。雪花键类似于正常Twig变量,并引用内容。
每个雪花键在给定的页面上必须是唯一的,但可能与其他页面的键冲突。在布局中添加雪花键时,可能会发生与页面的名称冲突。通常建议在布局中为雪花键添加前缀(例如,'layout_my_headline'
)。
'sf'
过滤器接受最多三个参数
- 参数1:定义内容的类型。这控制用于内容管理的内容后端小部件。
- 参数2(可选):允许设置内容的默认值。对于类型'图像'、'文件'、'日期'、'媒体图像'和'媒体文件',默认值没有影响。
- 参数3(可选):为负责内容管理的人员添加描述。
注意:在参数中不得使用字符','(逗号)和'|'(管道)。
目前,雪花支持七种标准类型和五种特殊类型。
标准类型
text
(简单文本输入,例如,用于标题)颜色
(Winter CMS 颜色选择器)markdown
(Winter CMS Markdown 编辑器)richeditor
(Winter CMS 富文本编辑器)code
(Winter CMS 代码编辑器)date
(Winter CMS 日期选择器)textarea
(纯文本区域字段)
特殊类型
-
图片
:用于控制图片,并使用 Winter CMS 图片上传小部件。渲染时需要两个值:图片路径和
alt
属性。为了处理这一点,变量必须传递两个值。示例
<img src="{{ 'my_image' | sf('image', '', 'This is the hero image on this page') }}" alt="{{ my_image___alt }}">
注意:在
src
属性中只添加一次'sf'
过滤器;alt
属性使用相同的键加上后缀'__alt'
。 -
媒体图片
:类似于
'image'
,但'mediaimage'
使用 Winter 媒体库作为图片源<img src="{{ 'my_image' | sf('mediaimage', '', 'This is the hero image on this page') }}" alt="{{ my_image___alt }}">
-
文件
:用于控制文件上传。类似于
image
,它使用两个值:文件路径和链接中显示的文件名。示例
<a href="{{ 'my_file' | sf('file', '', 'This is my uploaded file') }}">{{ my_file__name }}</a>
-
媒体文件
:类似于
'file'
,但'mediafile'
使用 Winter 媒体库作为文件源<a href="{{ 'my_file' | sf('mediafile', '', 'This is my uploaded file') }}">{{ my_file__name }}</a>
-
链接
:用于内部 Winter CMS 链接。该
'link'
类型允许内容管理员简单地从浏览器窗口复制完整的 URL,而不必担心正确的格式。它将自动转换为干净的相对链接。
与 Snowflake 后端同步
如果您使用 Winter CMS 后端来编辑代码,只需保存您的页面或布局,Snowflake 将自动创建或更新数据库中相应的记录。
一旦删除 Snowflake 键(或重命名),它将根据以下逻辑处理为未使用的数据库记录
- 如果记录中存在现有内容: 它将被保留。
- 如果没有内容存在: 它将被删除。
或者,您可以使用控制台命令来同步所有 CMS 页面和布局
php artisan snowflake:sync
要清理所有未使用的 Snowflake 键(注意:这将删除相关的内容),请使用
php artisan snowflake:sync --cleanup