evanshunt/lumberjack-sort-and-summary

当仅允许一个子类时,使用 $summary_fields, $default_sort 和 $plural_name 对 LumberJack 进行排序和总结

安装次数: 7,396

依赖项: 1

建议者: 0

安全: 0

星标: 4

关注者: 2

分支: 2

类型:silverstripe-vendormodule

v2.0.0 2024-02-02 17:54 UTC

This package is auto-updated.

Last update: 2024-08-31 00:35:40 UTC


README

银Stripe Lumberjack 模块的常见用例是 holder/page 模式。在这种情况下,容器页面将只包含一种类型的子页面。

由于 Lumberjack 构建得足够灵活,可以容纳多种类型的子页面,因此当只允许一种页面类型时,可能会缺失一些预期功能。例如

  • 使用子页面类型的默认排序顺序
  • 使用定义的摘要字段列出页面
  • 使用子类型名称而不是 "子页面" 标记列表

此模块在定义了父容器页面的单个子类型时应用上述功能。

感谢 @bcairns 为此模块的代码和文档所做的贡献

安装

composer require evanshunt/lumberjack-sort-and-summary

使用

为父页面定义 $allowed_children。 (可以在 yml 配置或模型中完成)

namespace MyNamespace;

use Page;

class StoryLandingPage extends Page
{
    private static $allowed_children = [
        StoryDetailsPage::class
    ];
}

为子页面定义 $plural_name$summary_fields$default_sort

namespace MyNamespace;

use Page;

class StoryDetailsPage extends Page
{
    private static $table_name = 'StoryDetails';
    private static $singular_name = 'Story';
    private static $plural_name = 'Stories';

    private static $can_be_root = false;
    private static $default_parent = StoryLandingPage::class;

    private static $db = [
        'PublicationDate' => 'Date',
    ];

    private static $summary_fields = [
        'Title',
        'PublicationDate'
    ];

    private static $default_sort = 'PublicationDate DESC';
}

安装和配置 Lumberjack

MyNamespace\StoryDetailsPage:
  show_in_sitetree: false
MyNamespace\StoryLandingPage:
  extensions:
    - SilverStripe\Lumberjack\Model\Lumberjack

配置

不需要额外的配置。此模块在 Lumberjack 中覆盖了方法,以检查父类中的 $allowed_children 的值,如果只定义了一个类,它将根据子类中的配置值应用更改。