grrr-amsterdam/oc-flexiblecontent-plugin

OctoberCMS 模型添加灵活内容的插件。

v0.2.0 2024-09-25 12:58 UTC

This package is auto-updated.

Last update: 2024-09-25 13:00:30 UTC


README

本插件受Wordpress的高级自定义字段PRO插件启发,允许您为OctoberCMS网站创建灵活的内容块。此插件将处理编辑和渲染部分。

此软件包还包含一个用于可搜索选择(Select2)的灵活模型对象字段 'fc-model-object',允许您选择模型对象并在灵活内容块中使用,而无需与模型有优雅的关系。

安装

composer require grrramsterdam/flexiblecontent-plugin

用法

您可以通过将它们添加到 themes/your-theme/flexible-content/groups.yaml 中来添加灵活内容块。这本质上是一个 repeater 字段中的 groups 选项。每个组必须指定一个唯一的键,定义支持以下选项:name,description,icon和fields。

示例

text:
  name: Text
  description: A simple text block
  icon: icon-align-left
  fields:
    text:
      label: Text
      type: richeditor
text_media:
  name: Text with media
  description: A text block with media
  icon: icon-align-left
  fields:
    text:
      label: Text
      type: richeditor
    media:
      label: Media
      type: mediafinder

灵活模型对象字段

使用此字段,您可以在灵活内容块中创建一个可搜索的模型对象字段,可用于选择模型对象,而无需与模型有优雅的关系。

用法

fields:
  model_object:
    label: Pick example
    type: fc-model-object
    model: Grrr\FlexibleContent\Models\ExampleModel
    nameFrom: title
    emptyOption: "Select an example item"
    # searchEndpoint: grrr/project-plugin/example-models/search-select-options

异步选择选项

默认情况下,会对模型执行 all() 查询以动态填充选择选项。但这可能很快成为一个内存问题。您可以指定 searchEndpoint 选项。这应该是一个返回以下格式的JSON响应的OctoberCMS后端控制器路由:

{
  "results": [
    {
      "id": 1,
      "text": "Example item 1"
    },
    {
      "id": 2,
      "text": "Example item 2"
    }
  ]
}

此软件包提供了一个行为 GrrrAmsterdam\FlexibleContent\Behaviors\HasSearchableSelectOptions,您可以在使用FormController行为的控制器中使用。按如下方式注册:

// [plugin path]/controllers/Examples.php

public $implement = [
    'Backend\Behaviors\FormController',
    'GrrrAmsterdam\FlexibleContent\Behaviors\HasSearchableSelectOptions',
];

默认情况下,搜索查询将在模型的 title 属性上执行。您可以通过在控制器上重写 getSearchableSelectOptions() 方法来更改此行为。

此行为将在控制器中添加一个路由,后端路径如下:{vendor}/{plugin}/{controller}/search-select-options。您可以将此路径用作 searchEndpoint 选项。