wrux / blocky
将矩阵字段映射到数组中以在twig中渲染。
1.1.2
2024-03-08 17:06 UTC
Requires
- craftcms/cms: ^4.0.0
Requires (Dev)
- phpstan/phpstan: ^1.0.0
README
Blocky CMS 3.x 插件
用于 Craft CMS 的矩阵字段映射的实用插件。
Blocky 处理解析 Matrix 块的逻辑,以便您可以创建更干净的 Twig 模板。
需求
此插件需要 Craft CMS 3.0.0 或更高版本。
安装
要安装插件,请按照以下说明操作。
-
打开您的终端并转到您的 Craft 项目
cd /path/to/project
-
然后让 Composer 加载插件
composer require wrux/blocky
-
在控制面板中,转到设置 → 插件,并点击 Blocky 的“安装”按钮。
配置块解析器
-
在您的 Craft 项目中创建
config/blocks.php
<?php return [ 'textBlock' => 'app\blocks\TextBlock', ];
-
在您的项目中某个位置,为每个 Matrix 块创建类,该类扩展
wrux\blocky\Block
以下是一个示例块
<?php namespace app\blocks; use wrux\blocky\Block; class TextBlock extends Block { public string $template = 'text.twig'; public function getContext(): array { return [ 'text' => !empty($this->block->contentHtml) ? $this->block->contentHtml->getParsedContent() : NULL, ]; } }
模板化
Blocky 在模板中可用为 craft.blocky
,或者您也可以使用 {% blocks ... %}
Twig 标签。
Twig 标签
{% blocks %}
标签与 Twig for 循环类似。它期望一个矩阵字段,并将处理解析和迭代。
示例
{% blocks in entry.blockComponents %} <section class="block {{ 'block--' ~ type }}"> {% include template with context only %} </section> {% endblocks %}
跳过空块的示例
您可以在打开标签中使用 skip empty
。这将跳过返回空上下文的块。
{% blocks in entry.blockComponents skip empty %} <section class="block {{ 'block--' ~ type }}"> {% include template with context only %} </section> {% endblocks %}
变量
在 {% blocks %}
标签内部可用以下变量。
手动解析块
如果您不想使用 Twig 标签,可以使用 craft.blocky
服务手动解析块。内部这消耗相同的 Blocky::$plugin->parseBlocks()
方法。此方法允许您在 for 循环之前检查 blocks.hasBlocks
。
示例
{% set blocks = craft.blocky.parseBlocks(entry.blockComponents) %} {% if blocks.hasBlocks %} <div class="blocks"> {% for block in blocks %} <section class="block {{ 'block--' ~ block.type }}"> {% include block.template ignore missing with block.context only %} </section> {% endfor %} </div> {% endif %}
块解析器路线图
要完成的事情和潜在功能的想法
- 测试 🔥
- CraftCMS 4.0 发布后嵌套块。
由 Callum Bonnyman 提供