datacode/craftcms-core

Datacode Solutions 插件

1.1.2 2018-02-18 03:09 UTC

This package is not auto-updated.

Last update: 2024-10-02 04:45:58 UTC


README

Craft PHP

欢迎使用 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') }}`
    • 视频 URL 过滤器
      • 目前支持 vimeo 和 youtube URL
      • 用法:: `{{ entry.videoUrl | videoEmbedUrl }}`

高级用法

  • 行为

    所有行为都绑定到元素的句柄。

    • 条目: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() }}