Bludit经验_api_调用_自建函数等

Bludit cms使用宝典

//修改默认管理地址

/bl-kernel/boot/variables.php
ADMIN_URI_FILTER
修改此变量

​ 修改管理员地址

//主题目录 放入主题后需要在后台启用才可

/bl-themes
以此主题为例 修改模板位置
/bl-themes/docs-x-3.2/php

nginx伪静态

除了官方的https://docs.bludit.com/en/webservers/nginx
我使用的是自动转换阿帕奇的

rewrite ^/bl-content/(databases|workspaces|pages|tmp)/.*$ - redirect;
if (!-f $request_filename){
    set $rule_0 1$rule_0;
}
if (!-d $request_filename){
    set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
 rewrite ^/(.*) /index.php last;
}

//数据位置

bl-content/pages //负责内容数据所在目录
bl-content/databases //负责除了内容以外的所有字段

//新增一个自定义字段并在后台能管理 api能请求

通常文件名以不带s负责调用 带s负责保存
新增字段时若需要后台去管理则需求修改这些文件
系统内置了很多没什么用的插件 只是没有启用 API需要首先启用api插件
我一般启用的插件是:Backup、API、Custom fields parser
Custom fields parser插件是自定义字段用的 但不好用 api也不支持操作新增和编辑,故只能用于编辑文章

插件使用介绍 https://docs.bludit.com/en/content/custom-fields
**1. 新增字段 **、
也就是说新增一个内容字段只需要修改pagex与pages即可完成 我选的这个方案
但最为快捷的方式是利用好这个插件
具体做法放在下面尾部
2. api输出

地址 作用
/bl-kernel/pagex.class.php 内容回显调用及API
/bl-kernel/users.class.php 用户回显调用及API

**3. 后台管理 **
以下文件可以根据需求修改后台为自己想要的界面

地址 作用
/bl-kernel/admin/views/ 后台主题目录
/bl-kernel/user.class.php 后台调用数据库及api调用显示的
/bl-kernel/admin/views/edit-user.php 后台编辑用户界面调用
/bl-kernel/admin/views/users.php 后台用户列表
/bl-kernel/admin/views/dashboard.php 后台控制面板首页
/bl-kernel/admin/views/edit-content.php 后台内容编辑

4. 字段保存

地址 作用
/bl-kernel/users.class.php 后台修改用户保存时负责保存到数据库处理
/bl-kernel/pages.class.php 后台内容处理与API提交保存

'custom'=>array() //就是负责自定义插件的

新建自定义字段

比如要手工新增一个内容字段,需要修改4个文件
new-content.php
edit-content.php
pagex.class.php
pages.class.php
步骤是
1.先从 pages.class.php
以下函数内增加一项字段
public function json($returnsArray=false)
再到下方合适位置增加该字段的读取函数

2.从pagex.class.php
以下代码中增加一项字段 并不需要其他配置
class Pages extends dbJSON {

3.再到edit-content.php与new-content.php
需要展示该字段的位置增加对应的表单代码即可
但新建文章new-content.php里面要注意值要这样写
'value'=>'',

//api操作方式

具体方式去看手册 官方https://docs.bludit.com/
一般使用
如:
http://y.com/api/pages/fastrobots?token=c93307c15da2df6b06597c85a4baddb8

API 说明
/api/pages/栏目urlkey?token=密匙 获取文章数据
/api/pages/页面url 修改某个页面,下面会介绍

修改某个页面的方法:

请求方法:PUT

请求地址:如下

http://y.com/api/pages/pageurlkey

请求头:
请求头中包含的是api的token和authentication用户的身份验证令牌,但具体在发送内容中做验证,具体如下

Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.9
Content-Type: application/x-www-form-urlencoded
token: c93307c15da2df6b06597c85a4baddb8
authentication: 68056b5d90cad9916a60be81e1d04b8a
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1

发送内容:
本例子 直接把令牌和密匙写入了内容并修改正文字段的值,需要注意的是,大规模的内容最好转为json编码再赋值给变量发出去,以免失败,如果只改一个字段可能会清空其他自定义字段,自定义字段目前不支持api新增/编辑操作
{
    "token": "c93307c15da2df6b06597c85a4baddb8",
    "authentication": "68056b5d90cad9916a60be81e1d04b8a",
    "content": "修改正文内容的值"
}

虽然api修改文章会导致后台不能正常读取字段值 但还是可以做到api编辑,只要后台不去修改即可

{
    "token": "c93307c15da2df6b06597c85a4baddb8",
    "authentication": "68056b5d90cad9916a60be81e1d04b8a",
  "content": "\u6210!",
    "custom":{
      "robotname": "moban",
      "robotof": true,
      "stime": "667766"
     }
}

//利用插件的做法

此方案未对api的新增数据、修改数据做过测试

//基础配置:

在后台启用插件 Custom fields parser
在后台》CUSTOM FIELDS》设置好自定义字段 例如

{
    "robotname": {
        "type": "string",
        "label": "\u722c\u866b",
        "tip": "\u8f93\u5165\u722c\u866b\u540d."
    },
    "robotof": {
        "type": "bool",
        "label": "\u722c\u866b\u5f00\u5173",
        "tip": "\u8be5\u722c\u866b\u7684\u5f00\u5173"
    },
    "stime": {
        "type": "string",
        "label": "\u6682\u505c\u7b49\u5f85\u65f6\u95f4",
        "tip": "\u722c\u866b\u7b49\u5f85\u95f4\u9694\u65f6\u95f4."
    }
}
//api调用配置

找到文件:
/bl-kernel/pagex.class.php
第一步:找到以下代码将=true 表示开启调用
public function custom(field,options=true)
第二步
按照需求来 在此位置合适的位置新增一行
public function json($returnsArray=false)

api输出方式1(输出当前所有自定义字段值):
['custom']     = ->vars['custom'];
api输出方式2(只输出指定字段自定义字段值):
['custom']     = ->vars['custom'][robotname]['value'];

如此api请求即可返回指定文章的数据
api用法参考 #api操作方式

//自建函数及调用方法

新增函数文件
bl-kernel\functions.php
新建草稿函数例子

function buildDraftPages() {
    global ;

     = array();
     = ->getDraftDB();
    foreach ( as ) {
        try {
             = new Page();
            array_push(, );
         catch (Exception ) {
            // continue
        }
    }

    return ;
}}

调用方式
以后台首页调用为例
/bl-kernel/admin/views/dashboard.php

<!--draft-->
<?php
     = buildDraftPages();
    foreach ( as ) {
        echo '<li class="list-group-item">'.->title().'内容:'.->content().'</li>';

?>}

调用指定栏目的草稿内容
<?php
    $lanmu = buildDraftPages();
    foreach ($lanmu as $lanmu) {
        if($lanmu->category()=='tihuo'){
        echo '<li class="list-group-item">'.$lanmu->title().':'.$lanmu->content().'</li>';
}
}
?>