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(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>';
}
}
?>