arillo/silverstripe-utils

SilverStripe CMS 的工具和辅助函数。

安装次数: 1,477

依赖项: 0

建议者: 0

安全: 0

星级: 0

关注者: 6

分支: 0

开放问题: 0

类型:silverstripe-vendormodule

0.1.0 2019-12-13 14:46 UTC

This package is auto-updated.

Last update: 2024-09-24 08:55:32 UTC


README

最新稳定版本   总下载量

SilverStripe CMS 的工具和辅助函数。

要求

SilverStripe CMS ^4.0

安装

composer require arillo/silverstripe-utils

使用

此模块是一组用于更改 CMS 功能的类。

Arillo\Utils\HiddenLeftAndMain

Arillo\Utils\HiddenLeftAndMain附加到您想要隐藏的任何 LeftAndMain 子类,例如在 config.yml

SilverStripe\CampaignAdmin\CampaignAdmin:
  extensions:
    - Arillo\Utils\HiddenLeftAndMain

Arillo\Utils\FluentFilteredHelper

如果您使用 silverstripe-fluentTractorCow\Fluent\Extension\FluentFilteredExtension,则可以将 Arillo\Utils\FluentFilteredHelper 添加到您的翻译数据对象中,它将在记录创建时附加所有区域,并在记录删除时删除区域条目。在配置中,例如添加

MyDataObject:
  # will create locale entries for this record on first save, default: true
  auto_create_locales: true

  # will delete locale entries on record deletion, default: false
  auto_delete_locales: true
  extensions:
    - 'TractorCow\Fluent\Extension\FluentFilteredExtension'
    - 'Arillo\Utils\FluentFilteredHelper'

Arillo\Utils\FluentHelper

使用 Arillo\Utils\FluentHelper::force_delete 可以在记录删除时提高 CMS 的用户体验。目前 Fluent 要求您在每个区域中删除页面,才能将其从 SiteTree 中删除。示例用法

<?php
use SilverStripe\CMS\Model\SiteTree;
use Arillo\Utils\FluentHelper;

class Page extends SiteTree
{
    public function onBeforeDelete()
    {
        parent::onBeforeDelete();
        FluentHelper::force_delete($this); // insert this
    }
}

Arillo\Utils\CMS

一些未排序的功能。

从菜单中删除与活动相关的操作

<?php
use SilverStripe\CMS\Model\SiteTree;
use Arillo\Utils\CMS;

class Page extends SiteTree
{
    public function getCMSActions()
    {
        return CMS::remove_campaign_actions(parent::getCMSActions());
    }
}

用于网格字段使用的缩略图辅助函数

<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\Assets\Image;
use Arillo\Utils\CMS;

class MyDataObject extends DataObject
{
    private static $has_one = [ 'Image' => Image::class ];
    private static $summary_fields = [ 'Thumbnail' => 'Image' ];

    public function getThumbnail()
    {
        return CMS::thumbnail($this->Image());
    }
}

Arillo\Utils\AlertField

在 CMS 中显示消息(bootstrap alert style)。例如。

<?php
use SilverStripe\CMS\Model\SiteTree;
use Arillo\Utils\AlertField;

class Page extends SiteTree
{
    public function getCMSFields()
    {
        $fields = parent::getCMSFields();
        $fields->addFieldToTab(
            'Root.Main',
            AlertField::create('PageInfo', "Page type: {$this->ClassName}", 'dark')
        , 'Title');
        return $fields;
    }
}

Arillo\Utils\SortableDataObject

将此扩展添加到数据对象以使其可排序

use SilverStripe\ORM\DataObject;
use Arillo\Utils\SortableDataObject;

class MyDataObject extends DataObject
{
    private static $extensions = [
        SortableDataObject::class,
    ];
}

您可以使用以下辅助函数将 GridFieldOrderableRows 应用于管理 GridField

use Arillo\Utils\SortableDataObject;

...
..
.

SortableDataObject::make_gridfield_sortable($gridField);

Arillo\Utils\Env

有 3 个全局辅助函数用于模板使用

Is DEV: <% if $IsDev %>yes<% else %>no<% end_if %> <br>
Is TEST: <% if $IsTest %>yes<% else %>no<% end_if %> <br>
Is PROD: <% if $IsProd %>yes<% else %>no<% end_if %> <br>

在 php 中

Arillo\Utils\Env::is_dev();
Arillo\Utils\Env::is_prod();
Arillo\Utils\Env::is_test();

Arillo\Utils\PageHelper

页面和模板功能的辅助函数。

添加 PageInstancePageControllerInstance 模板方法。当需要只有一个 SiteTree 子类实例时非常有用

<%-- access a page by classname in templates --%>
$PageInstance(SomeSiteTreeSubClassName).Title
$PageInstance(SomeSiteTreeSubClassName).Link

<%-- e.g. render a Form from a diffrent controller --%>
$PageControllerInstance(SomeSiteTreeSubClassName).Form