stinchjack / helper
Concrete5 V8 的辅助类
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 ...
}
}