flipboxfactory/craft-element-lists

简单的元素列表

3.3.0 2022-03-02 20:10 UTC

README

Join the chat at https://gitter.im/flipboxfactory/craft-element-lists Software License Build Status Coverage Status Quality Score Total Downloads

元素列表引入了一种基于表格的元素关系字段类型;非常适合大型或增长中的元素关系。

Screenshot

版本 3 中的新功能

元素列表字段现在返回一个 关系接口(而不是传统的 元素查询接口)。因此,如果您的应用程序以自定义方式(php/plugins/modules)操作关系,则需要一些更改。具体来说,操作关系应使用 关系接口 上的 addremovesave 方法(以下是一些示例)。

注意:通过 TWIG 使用传统的 元素查询接口 访问字段数据仍然受支持;无需更改代码。

要求

此插件需要 Craft CMS 3.2.x 至 Craft 3.3.x。

安装

选择以下方法之一将 Element List 添加到您的项目中

  1. Composer

    只需从您的项目根目录运行以下命令

    composer require flipboxfactory/craft-element-lists
    
  2. Craft CMS 插件商店

    在您的 Craft CMS 项目管理面板中,导航到 '插件商店' 并搜索 'Element List'。安装只需点击按钮即可。

一旦插件包含在您的项目中,导航到控制面板,转到设置 → 插件,然后点击 Element List 的“安装”按钮。

有关更多信息(包括定价),请参阅 插件商店

功能

Element List 将熟悉的元素 '索引' 视图引入您的字段。专为大型关系集构建,Element List 为内容发布者提供了一个可筛选的、基于表格的相关元素视图。与原生关系一样,Element List 的配置与原生关系一样简单。

以下是一些功能概述

  • 实时添加/删除关系
  • 处理大型关系集(数百/数千)
  • 可排序列表视图
  • 可搜索列表视图
  • 开发者友好

模板(版本 1 & 2)

类似于 原生关系字段,一个 Element List 字段返回一个 元素查询接口

遍历字段关系

<ul>
    {% for relatedElement in element.fieldHandle.all() %}
        <li>{{ relatedElement.id }} - {{ relatedElement.someCustomField }}</li>
    {% endfor %}
</ul>

模板(版本 3)

一个 Element List 字段返回一个 关系接口,这是访问和管理关系的首要接口。

遍历字段关系

<ul>
    {% for relatedElement in element.fieldHandle.collection.all() %}
        <li>{{ relatedElement.id }} - {{ relatedElement.someCustomField }}</li>
    {% endfor %}
</ul>

版本 1 和 2(上面)的旧查询操作仍然可以访问(但不建议使用)。

集合 (新引入于版本 3)

在版本 3 中,您将开始使用一个 集合。这些是超级实用的类,具有各种 方法 来与您的数据交互。

预加载

元素列表也支持预加载。只需遵循本机的 嵌套集预加载文档

开发者

原生关系字段对开发者不友好;我们希望在版本 3 中通过引入关系接口的概念来解决这个问题。
以下是一些示例

// Add two new users to the list
Entry::findOne(['id' => 1])
    ->userListField
    ->add([
        'nate@flipboxdigital.com',
        'damien@flipboxdigital.com'
    ])
    ->save();
// Remove one user and add another
Entry::findOne(['id' => 1])
    ->userListField
    ->remove('nate@flipboxdigital.com')
    ->add('damien@flipboxdigital.com')
    ->save();
// Remove all users
Entry::findOne(['id' => 1])
    ->userListField
    ->clear()
    ->save();

在上面的示例中,我们立即保存了关系;然而,如果您更改了关系但没有保存,当元素被保存时,关系更改也将被保存。

屏幕截图

Element Source Filter

Inline Element Edit

Select Modal

Input Remove Action

Field Settings

鸣谢