spanjaan / wn-snowflake-plugin

雪花插件是Winter CMS的动态内容管理器

安装: 5

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型: winter-plugin

v1.0.5 2024-08-29 11:29 UTC

This package is auto-updated.

Last update: 2024-10-02 08:58:54 UTC


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. 参数1:定义内容的类型。这控制用于内容管理的内容后端小部件。
  2. 参数2(可选):允许设置内容的默认值。对于类型'图像'、'文件'、'日期'、'媒体图像'和'媒体文件',默认值没有影响。
  3. 参数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