flipboxfactory / craft-element-lists
简单的元素列表
Requires
- craftcms/cms: >=3.4.0
- flipboxfactory/craft-elements-nested-index: ^2.4.0
- flipboxfactory/craft-ember: ^2.4.0
- tightenco/collect: >=5.5
Requires (Dev)
- codeception/codeception: ^2.2
- phpunit/phpunit: ^5.0
- squizlabs/php_codesniffer: ^2.0
This package is auto-updated.
Last update: 2024-08-29 04:54:21 UTC
README
元素列表引入了一种基于表格的元素关系字段类型;非常适合大型或增长中的元素关系。
版本 3 中的新功能
元素列表字段现在返回一个 关系接口(而不是传统的 元素查询接口)。因此,如果您的应用程序以自定义方式(php/plugins/modules)操作关系,则需要一些更改。具体来说,操作关系应使用 关系接口 上的 add
、remove
和 save
方法(以下是一些示例)。
注意:通过 TWIG 使用传统的 元素查询接口 访问字段数据仍然受支持;无需更改代码。
要求
此插件需要 Craft CMS 3.2.x 至 Craft 3.3.x。
安装
选择以下方法之一将 Element List 添加到您的项目中
-
Composer
只需从您的项目根目录运行以下命令
composer require flipboxfactory/craft-element-lists
-
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();
在上面的示例中,我们立即保存了关系;然而,如果您更改了关系但没有保存,当元素被保存时,关系更改也将被保存。