datacode / craftcms-core
Datacode Solutions 插件
Requires
- php: >=7.0.0
This package is not auto-updated.
Last update: 2024-10-02 04:45:58 UTC
README
欢迎使用 CraftCMS 3 的 Datacode Core。
尽管仍然处于测试版,但许多插件已经开始跟进。CraftCMS 3 中的 Datacode Core 将非常不同,基本上是重写,但 95% 的功能仍然存在。
Datacode Core 提供了一种使用 Craft 的 $element->attachBehavior() 方法将行为附加到元素上的方式。提供全局变量,可以直接从模板中访问您的服务,以及一些内置行为和 twig 过滤器。
由于 CraftCMS 3 和新的插件安装方式,我们必须想出一种简单的方法,让开发者像以前一样轻松地扩展我们的插件,但无需深入到供应商目录中。虽然这是可能的,但我们不希望您不得不这样做。相反,一个 datacode.php 配置文件将与 plus 核心代码通信,以在初始化时“扩展”它。下面有更多关于此的信息。
安装
要安装 Datacode Core,请按照以下步骤操作
- 进入您的项目目录
- 运行
`
composer require datacode\core`
- 从 Craft 控制面板转到设置 > 插件并启用该插件
"扩展器"
现在核心 Datacode Core 插件已安装并启用,您可以从项目的根目录开始扩展插件,而无需深入到供应商文件中。
- 首先为您的扩展器文件创建一个文件夹。在我的特定情况下,我将其命名为站点名称“datacode”。
- 可选地,创建一个 Extender.php 文件,该文件扩展了核心插件。这允许您为您的实现创建自定义路由和 cp 路由。
- 在该文件夹中,您可以创建子目录以存储您的行为、服务、控制器、twigextensions、变量等。
- 正确命名空间您的文件,因为我们需要在配置文件中使用这些。
- 例如:
`
namespace datacode/behaviors/entries`
- 例如:
`
namespace datacode/services`
- 例如:
`
namespace datacode/twigextensions`
- 以此类推...
- 例如:
- 最后,通过在主 craft 配置目录中创建一个 datacode.php 文件来连接一切,它应该看起来像这样...
<?php return [ "namespace" => "datacode\\", "folderPath" => CRAFT_BASE_PATH . '/datacode', "extender" => "pamlico\\Extender", "controllerNamespace" => "datacode\\controllers", "twigextension" => "datacode\\twigextensions\\DatacodeTwigExtension", "services" => [ "meta" => "datacode\\services\\MetaService" ], "variables" => [ "name" => "datacode\\twigextensions\\DatacodeVariable" ] ];
配置键
- 命名空间: 扩展器的命名空间
- 文件夹路径: 扩展器的路径
- 控制器命名空间: 控制器命名空间根
- Twig 扩展: 完整命名空间的 Twig 扩展类
- 服务: 服务数组映射
- 变量: 变量数组映射
基本用法
开箱即用
- AssetBehavior
- Craft Twig 标准方式
`
{{ entry.assetHandle.one.getUrl() }}`
- 新方式
`
{{ entry._assetUrl('assetHandle') }}`
- 可选
`
{{ entry._assetUrl('assetHandle', 'squareTransformHandle') }}`
- 预加载的资源将使用
`
{{ entry._eAssetUrl('assetHandle') }}`
- Craft Twig 标准方式
- 视频 URL 过滤器
- 目前支持 vimeo 和 youtube URL
- 用法::
`
{{ entry.videoUrl | videoEmbedUrl }}`
- AssetBehavior
高级用法
行为
所有行为都绑定到元素的句柄。
- 条目:Entry -> Section -> Handle
- 类别:Category -> Group -> Handle
- 全局集:Global -> Handle
- 矩阵块:MatrixBlock -> Field -> Handle
为问题元素创建一个文件(将“行为”进行数据编码)。例如,对于“主页”(单个)。
<?php namespace datacode/behaviors/entries use datacode\core\Plugin; //if you need to access the core plugin use datacode\core\behaviors\entries\BaseEntryBehavior; class HomeBehavior extends BaseEntryBehavior { public function _somethingInteresting() { return 'something interesting'; } }
我不会过多地介绍如何添加行为或为什么这样做,DatacodeCore只是起一个促进作用。请参考CraftCMS文档或Yii2文档以获取有关行为的更多详细信息。
服务
服务将映射到核心插件内部的工作方式,有关这些服务的文档已经可以在CraftCMS的GitHub页面找到 文档。Plus的额外好处是plus变量及其从模板中访问任何服务的能力,而无需创建新的变量和/或Twig扩展。以下我将给出两个例子...
服务将看起来像这样
<?php namespace datacode\services; use Craft; use craft\base\Component; use datacode\core\Plugin; class QuoteService extends Component { public function getRandomQuote() { // code here } }
这里您有访问服务的常规PHP方式
<?php namespace datacode/behaviors/entries use datacode\core\Plugin; //if you need to access the core plugin use datacode\core\behaviors\entries\BaseEntryBehavior; class HomeBehavior extends BaseEntryBehavior { public function _somethingInteresting() { $quote = Plugin::$plugin->quote->getRandomQuote(); return $quote; } }
在twig w/Datacode Core中
{{ datacode('quote').getRandomQuote() }}