thepixelage/craft-fragments

片段是Craft CMS的一个插件,用于管理和展示内容片段

安装数量: 4,495

依赖: 0

建议者: 0

安全: 0

星标: 6

关注者: 2

分支: 1

开放问题: 2

类型:craft-plugin


README

Fragments icon

Craft CMS片段插件

片段 是一个Craft CMS插件,用于管理和展示内容片段。它允许您将条目类型与内容块、小部件或组件解耦,这些组件是临时的或表现性的,类似于Drupal中的块和区域或Joomla中的模块和位置。

片段

使用 片段,提供了一系列实体来帮助您管理内容和表现性片段

  • 片段类型
    与条目类型一样,您可以为您的片段设置内容模型和字段布局。

  • 区域
    模板区域,或简称区域,是您模板中创建和显示片段的区域。区域可以限制为只允许特定类型的片段。

  • 片段(元素)
    这些是要显示的实际内容块。每个片段可以根据可见性规则进一步定制,以包含或排除在区域中。

  • 片段(自定义字段)
    包含的片段字段允许您的编辑器与某些或所有区域中的片段相关联。这为创建可重用的片段提供了可能性,这些片段可以包含在条目和内容块构建器中。

为什么选择片段?

有许多情况需要将内容片段显示在多个页面上,但它们是临时的内容部分或数据,可能不是条目类型的一部分。

例如,您的服务页面可能需要一个针对该服务的行动按钮或引导表单。虽然您可以在服务条目类型中创建自定义字段,以便内容编辑器指示要显示的行动按钮,但这条信息与条目类型耦合在一起。如果这些按钮和引导表单还需要在其他页面上显示,则每个其他条目类型也需要添加此字段。

没有 片段,您可能需要使用Craft CMS中的功能来构建解决方案,但这带来了一些挑战

  • 部分和条目类型
    条目类型适用于将领域模型映射到内容模型,但对于与这些领域模型没有直接关系的部分内容,可能难以将它们表示为内容模型的一部分,或者创建整个部分来表示它们可能是一种过度行为。

  • 全局设置
    全局设置通常用于不属于条目或需要跨不同页面显示的内容。然而,在多站点设置中,由于所有全局集合都在控制面板中对所有站点可见,因此使用全局设置来管理不同站点上的不同内容变得困难。这可能会使内容编辑器感到困惑。

  • 内容块/内容构建器(矩阵/Neo)
    内容块构建器字段可能会因为过多的块类型而变得杂乱。 片段 可以用作具有自己的类型和区域的子系统(将其视为组或集合),这使得您的内容块构建器字段更可扩展。

使用 片段,您的编辑器可以创建可以包含在模板区域外的行动按钮片段。

文档

了解更多信息并阅读文档,请访问:https://www.thepixelage.com/plugins/fragments

许可证

此插件需要通过 Craft 插件商店 购买的商业许可证。

要求

此插件需要 Craft CMS 3.6.0 或更高版本。

安装

您可以从插件商店或使用 Composer 安装此插件。

从插件商店

前往项目的控制面板中的插件商店,搜索“Fragments”,然后在模态窗口中点击“安装”按钮。

使用 Composer

打开您的终端,在项目目录中运行以下命令

# tell Composer to load the plugin
composer require thepixelage/craft-fragments

# tell Craft to install the plugin
./craft install/plugin fragments

设置

在开始创建片段之前,您需要设置片段类型和模板区域。只有创建至少一个片段类型和一个模板区域后,片段部分才会显示。

片段类型

片段类型类似于如何设置条目类型。可以指定自定义字段,为片段提供结构化的内容模型。

要创建一个新的片段类型,请转到 设置 → 片段 → 片段类型

区域

模板区域(或我们通常称之为区域)允许您指定可以在模板中创建和显示片段的区域。区域还可以限制在其中创建的片段类型。这有助于在区域中更容易地组织和管理工作片段。

要创建一个新的模板区域,请转到 设置 → 片段 → 区域

查询片段

要查询区域中要显示在模板中的片段列表

{% set fragments = craft.fragments.zone('myZoneHandle').all() %}

查询片段列表后,您可以像访问条目字段一样访问字段。

{% for fragment in fragments %}
    <h1>{{ fragment.textField }}</h1>
    <img src="{{ fragment.imageField.one().url() }}" />
{% endfor %}

要仅针对特定片段类型的片段,修改前面的查询如下

{% set fragments = craft.fragments.zone('myZoneHandle').type('myFragmentTypeHandle').all() %}

GraphQL 支持

从 1.1.0 版本开始支持 GraphQL。以下是一个示例查询

{
    fragments(zone: "myZone", type: "myType", currentUrl: "/my-page") {
        __typename
        uid
        title
        ... on myFragmentType_Fragment {
            textField
        }
        ... on anotherFragmentType_Fragment {
            imageField
        }
    }
}

参数 zonetype 与上面的 Twig 示例中的方式相同。

使用 currentUrl 传递一个 URL,用于匹配您已设置的任何片段可见性规则。

ThePixelAge 创建