aelvan/preparse-field

该软件包已被废弃且不再维护。作者建议使用 besteadfast/craft-preparse-field 软件包。

当元素保存时,该字段类型会解析 Twig 并将结果保存为纯文本。

资助软件包维护!
jalendport
www.paypal.me/jalenconner

安装数: 35,116

依赖项: 1

建议者: 0

安全性: 0

星标: 108

关注者: 12

分支: 22

类型:craft-plugin

3.0.0-alpha.2 2024-07-15 15:17 UTC

README

当元素保存时,该字段类型会解析 Twig 并将结果保存为纯文本。

要求

此插件需要 Craft CMS 5.0.0 或更高版本,以及 PHP 8.2.0 或更高版本。

安装

要安装此插件,请按照以下说明操作。

  1. 打开您的终端并进入您的 Craft 项目

     cd /path/to/project
    
  2. 然后告诉 Composer 加载插件

     composer require jalendport/craft-preparse
    
  3. 在控制面板中,转到设置 → 插件,然后点击“安装”按钮为 Preparse Field。

用法

当创建一个新的 Preparse 字段时,您可以将要运行的 Twig 添加到字段的设置中。当保存具有该 Preparse 字段的元素时,代码将被解析,并将结果保存为纯文本。

请注意,Preparse 字段仅在字段所在的元素保存时更新。如果您从相关元素(如以下示例中的类别标题)中获取数据,然后更新相关元素,则预解析的值不会自动更新。

在 Twig 中,添加 Preparse 字段的元素可用作名为 element 的变量。最好使用此变量(而不是像 entryasset 这样的内容),因为您可能会将相同的 Preparse 字段添加到多个元素类型。这也意味着当 Preparse 字段添加到 Matrix、SuperTable 或 Neo 块时,该块将作为 element 可用,因此如果您想访问 Matrix/SuperTable/Neo 字段所属的元素,您将想要使用 element.owner

示例

如果您在元素上有一个名为 relatedCategory 的类别字段,您可以通过在字段设置中添加以下 Twig 将类别标题保存到 Preparse 字段

{{ element.relatedCategory.one().title ?? '' }}

这适用于将预解析的值保存到字段以用于排序、搜索或其他类似操作。

您还可以进行更高级的操作,例如性能优化。假设您有三个可能或可能未填充的不同资产字段。在模板中检查这些字段可能需要大量的查询,因为您不能在不实际查询的情况下检查 Craft 中的字段是否有关系。您可以使用以下方式获取资产 id

{% if element.smallListImage | length %}
    {{ element.smallListImage.one().id }}
{% elseif element.largeListImage | length %}
    {{ element.largeListImage.one().id }}
{% elseif element.mainImage | length %}
    {{ element.mainImage.one().id }}
{% endif %}

您可能会想要将其包裹在 {% apply spaceless %} ... {% endapply %} 中,使其更有用...

或者,您可以在保存时使用它进行一些批量工作,例如使用 Imager X 预生成大量图像转换

{% if element.mainImage | length %}
    {% set transformedImages = craft.imager.transformImage(element.mainImage.one(), [
    { width: 1000 },
        { width: 900 },
        { width: 800 },
        { width: 700 },
        { width: 600 },
        { width: 500 },
        { width: 400 },
        { width: 300 },
        { width: 200 },
        { width: 100 }
    ]) %}
{% endif %}

Preparse 还可以访问您网站的模板根目录,因此您甚至可以包含本地模板,如果您想进行更高级的操作并且/或者想将字段的 Twig 保持在版本控制中

{% include '_partials/customPreparseFieldStuff' %}

请确保您始终编写稳健的 Twig,考虑到字段可能尚未填充。如果在 Twig 中发生错误,则元素将无法保存。 编写防御性代码!

价格、许可证和支持

该插件遵循MIT许可证发布,这意味着只要您不将责任归咎于我们,您可以随意使用它。 它是免费的,这意味着绝对不包括任何支持,但您可能仍然会得到它。 如果您有任何问题,请在这里的GitHub上发布,我们将看看我们能做些什么。 :)

变更日志

请参阅变更日志文件