stinchjack / helper

Concrete5 V8 的辅助类

安装: 11

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:concrete5-package

dev-master 2018-06-24 21:18 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:42:01 UTC


README

Helper\LdJson\LDJsonBlockController

使用 Concrete\Core\Block\BlockController 替代,实现 schemaType() 和 schemaProperties($fieldData) 方法。

例如:

namespace Concrete\Package\Extrablocks\Block\Contactdetails;
use Helper\LdJson\LDJsonBlockController;

class Controller extends LDJsonBlockController
{

      protected $btTable = ' ... ';
      public function getBlockTypeName() { ... }


      public function getBlockTypeDescription() { ... }

      protected function schemaType() : string {
        return "ContactPoint";
      }

      protected function schemaProperties($fieldData) : array {

        // $fielddata contains the row from the BlockTypeController's table

        $name = trim($fieldData['honorific'] . ' ' .
          $fieldData['firstName'] . ' ' . $fieldData['lastName']);

        $data = [];

        $data['name'] = $name;

        $data['areaServed'] = $this->makeSchemaProperty(
            'AdministrativeArea',
              ['address' => '123 bonsqde st, Wellington',
              'branchCode'=> 'JW001']
          );

        if ($fieldData['email']) {
          $data['email'] = $fieldData['email'];
        }
        if ($fieldData['phone']) {
          $data['telephone'] = $fieldData['phone'];
        }
        if ($fieldData['fax']) {
          $data['fax'] = $fieldData['fax'];
        }

        return $data;
      }

      public function view($args) {...}
      public function validate($args) {...}

}

在 view.php 中添加

  <?php
    echo $LDJson;
  ?>

Helper\LdJson\LDJsonBlockController

使用 Concrete\Core\Block\BlockController 替代,实现 schemaType() 和 schemaProperties($fieldData) 方法。

例如:

namespace Concrete\Package\Extrablocks\Block\Contactdetails;
use Helper\LdJson\LDJsonBlockController;

class Full extends PageTypeController
{

    public function on_start() { ... }
    protected function schemaType() : string {
        return "LocalBusiness";
      }

    protected function schemaProperties($fieldData) : array {
      // $fielddata is null

      $data = [];
      $data['name'] = $name;
      return $data;
    }

    public function view($args) {...}


}

在 view.php 中添加

  <?php
    echo $LDJson;
  ?>

Helper\Block\RestrictAreaBlockType

通过添加一个块并移除指定组的删除权限,帮助将区域限制为单个块的单个 BlockType。需要启用高级权限。

在模板中,一切照旧

<?php
  $a = new Area('Header');
  $a->setAreaDisplayName('Header');
  $a->setBlockLimit(1);
  $a->display($c);  
?>

在控制器中,以下代码片段如果区域为空,则将 'image' 块类型添加到 'Header' 区域,移除 'Administrators' 和 'Editors' 组的删除权限。

注意:管理员仍然可以删除该块并用其他内容替换它。创建一个单独的组(如 Editors)将使此功能生效。


use Helper\Block\RestrictAreaBlockType;

class Home extends PageTypeController
{

    public function on_start() { ... }

    public function view() {
      $imageArea = Area::get($this->page, 'Header');

      if ($imageArea) {
        RestrictAreaBlockType::restrictPageAreaBlockType
          ($this->page, Area::get($this->page, 'Header'), 'image', ['Editors', 'Administrators']);
      }

      // ... any other code ...

    }
}