tdwesten/statamic-builder

此包的最新版本(v1.0.8)没有提供许可信息。

Statamic 的流畅蓝图和字段集构建器。

v1.0.8 2024-08-27 14:19 UTC

README

Github

Statamic Builder

Statamic Builder 可以加速构建 Statamic 网站。它提供了一种清晰的方法,使用 PHP 类来定义蓝图、字段集、集合、导航和分类。与编写 YAML 文件相比,这种方法提高了代码的可读性和可维护性。

例如,您可以定义一个集合蓝图如下

<?php

namespace App\Blueprints;

use Tdwesten\StatamicBuilder\Blueprint;
use Tdwesten\StatamicBuilder\FieldTypes\Section;
use Tdwesten\StatamicBuilder\FieldTypes\Text;
use Tdwesten\StatamicBuilder\FieldTypes\Tab;

class PageBlueprint extends Blueprint
{
    public $title = 'Page';

    public $handle = 'page';

    public $hidden = false;

    public function registerTabs(): Array
    {
        return [
            Tab::make('General', [
                Section::make('General', [
                    Text::make('title')
                        ->displayName('Title')
                        ->instructions('The title of the page')
                        ->localizable()
                        ->required()
                ]),
            ]),
        ];
    }
}

安装

您可以使用 composer 安装此插件。在您的终端中运行以下命令以安装插件。

composer require tdwesten/statamic-builder

蓝图和字段集

此插件允许您以流畅的方式创建蓝图和字段集。这使得定义和维护蓝图和字段集更加容易。

如何创建蓝图

  1. 运行以下命令创建一个新的蓝图,例如为页面蓝图

    php artisan make:blueprint PageBlueprint
  2. 在生成的文件中定义您的蓝图。例如

    <?php
    
    namespace App\Blueprints;
    
    use Tdwesten\StatamicBuilder\Blueprint;
    use Tdwesten\StatamicBuilder\FieldTypes\Assets;
    use Tdwesten\StatamicBuilder\FieldTypes\Section;
    use Tdwesten\StatamicBuilder\FieldTypes\Text;
    use Tdwesten\StatamicBuilder\FieldTypes\Tab;
    
    class PageBlueprint extends Blueprint
    {
        public $title = 'Page';
    
        public $handle = 'page';
    
        public $hidden = false;
    
        public function registerTabs(): Array
        {
            return [
                Tab::make('General', [
                    Section::make('General', [
                        Text::make('title')
                            ->displayName('Title')
                            ->instructions('The title of the page')
                            ->required(),
                        Assets::make('image')
                            ->displayName('Image')
                            ->maxItems(1)
                            ->instructions('The image of the page')
                            ->required(),
                    ]),
                ]),
            ];
        }
    }
  3. 在您的 config/statamic/builder.php 文件中注册蓝图

    <?php
        return [
            'blueprints' => [
                'collections.pages' => [
                    'page' => \App\Blueprints\PageBlueprint::class,
                ],
            ],
        ];
  4. 就这样!您现在可以在 Statamic 应用程序中使用您的蓝图。

如何创建字段集

  1. 运行以下命令创建一个新的字段集,例如为英雄字段集

    php artisan make:fieldset HeroFieldset
  2. 在生成的文件中定义您的字段集。例如,向英雄字段集添加标题和图片字段

    <?php
    
    namespace App\Fieldsets;
    
    use Tdwesten\StatamicBuilder\Fieldset;
    use Tdwesten\StatamicBuilder\FieldTypes\Assets;
    use Tdwesten\StatamicBuilder\FieldTypes\Text;
    
    class HeroFieldset extends Fieldset
    {
        public function registerFields(): array
        {
            return [
                Text::make('title')
                    ->displayName('Title')
                    ->instructions('The title of the hero')
                    ->required(),
                Assets::make('image')
                    ->displayName('Image')
                    ->maxItems(1)
                    ->instructions('The image of the hero')
                    ->required(),
            ];
        }
    }
  3. 在您的 config/statamic/builder.php 文件中注册字段集

    <?php
        return [
            'blueprints' => [
                'collections.pages' => [
                    'page' => \App\Blueprints\PageBlueprint::class,
                ],
            ],
            'fieldsets' => [
                \App\Fieldsets\HeroFieldset::class,
            ],
        ];
  4. 现在您可以在蓝图中使用您的字段集。例如

    <?php
    
    namespace App\Blueprints;
    
    use App\Fieldsets\HeroFieldset;
    use Tdwesten\StatamicBuilder\Blueprint;
    
    class PageBlueprint extends Blueprint
    {
        public $title = 'Page';
    
        public $handle = 'page';
    
        public $hidden = false;
    
        public function registerTabs(): Array
        {
            return [
                Tab::make('General', [
                    Section::make('General', [
                        HeroFieldset::make('hero'),
                    ]),
                ]),
            ];
        }
    }

支持的字段类型

支持所有默认的 Statamic 字段类型。您可以通过利用 Field 类来创建自定义字段类型。例如,要创建自定义字段类型,您可以使用以下代码

Field::make('custom_field')
    ->withAttributes([
        'type' => 'custom_type',
        'display' => 'Custom Field',
        'instructions' => 'This is a custom field',
        'required' => true,
        'options' => [
            'option1' => 'Option 1',
            'option2' => 'Option 2',
        ],
        // Add more attributes here...
    ]);

如何注册集合、分类和全局变量

此插件允许您在 PHP 类中定义集合、分类和全局变量,简化了定义和管理这些变量的过程。

如何注册集合

  1. 为文章集合蓝图生成新的集合蓝图,例如运行以下命令

    php artisan make:collection Articles
  2. 在生成的文件中定义您的文章集合蓝图。例如,该文件具有定义集合蓝图的所有选项。例如

    <?php
    
    namespace App\Collections;
    
    use Statamic\Facades\Site;
    use Tdwesten\StatamicBuilder\BaseCollection;
    
    class Articles extends BaseCollection
    {
        /**
         * Return the handle for the collection
         *
         * Example: return 'blog';
         */
        public static function handle(): string
        {
            return 'articles';
        }
    
        /**
         * Return the title for the collection
         *
         * Example: return 'Blog';
         */
        public function title(): string
        {
            return 'Articles';
        }
    
        // Add more options here...
    }
  3. 将集合添加到 config/statamic/builder.php 文件

    <?php
        return [
            'collections' => [
                \App\Collections\Articles::class,
            ],
        ];

如何注册分类

  1. 为分类蓝图生成新的分类蓝图,例如运行以下命令

    php artisan make:taxonomy Categories
  2. 在生成的文件中定义您的分类。例如,该文件具有定义分类的所有选项。例如

    <?php
    
    namespace App\Taxonomies;
    
    use Statamic\Facades\Site;
    use Tdwesten\StatamicBuilder\BaseTaxonomy;
    
    class Categories extends BaseTaxonomy
    {
        /**
         * Return the handle for the taxonomy
         *
         * Example: return 'tags';
         */
        public static function handle(): string
        {
            // TODO: Change to your taxonomy handle
    
            return 'categories';
        }
    
        /**
         * Return the title for the taxonomy
         *
         * Example: return 'Tags';
         */
        public function title(): string
        {
            // TODO: Change to your taxonomy title
    
            return 'Categories';
        }
    
        // Add more options here...
    }
  3. 将分类添加到 config/statamic/builder.php 文件

    <?php
        return [
            'taxonomies' => [
                \App\Taxonomies\Categories::class,
            ],
        ];

如何注册全局集

  1. 为网站设置全局集蓝图生成新的全局集蓝图,例如运行以下命令

    php artisan make:global-set SiteSettings
  2. 在生成的文件中定义您的全局集。例如,该文件具有定义全局集的所有选项。例如

    <?php
    
    namespace App\Globals;
    
    use Statamic\Facades\Site;
    use Tdwesten\StatamicBuilder\BaseGlobalSet;
    
    class SiteSettings extends BaseGlobalSet
    {
        /**
         * The handle for this global set
         *
         * Example: return 'footer';
         */
        public static function handle(): string
        {
            return 'site_settings';
        }
    
        /**
         * The title for this global set
         *
         * Example: return 'Footer';
         */
        public function title(): string
        {
            return 'Site Settings';
        }
    
        // Add more options here...
    }
  3. 将全局集添加到 config/statamic/builder.php 文件

    <?php
        return [
            'globals' => [
                \App\Globals\SiteSettings::class,
            ],
        ];