# XiaoCMS 二次开发 **Repository Path**: inkScholar/xiao_cms ## Basic Information - **Project Name**: XiaoCMS 二次开发 - **Description**: No description available - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: Readme - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2022-03-08 - **Last Updated**: 2024-08-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## XiaoCMS v2 版本更新 最初记录版本 1. 栏目 - 单页模板 - 单页面内容(隐藏) 2. 大部分单选按钮可以通过跟随文字进行选择 ## XiaoCMS v2.1 1. 编辑器 - 在线管理 - 增加单个文件删除功能 - 更换文件包 v2.1.1 编辑器_多图_删除单个图片_core_img_ueditor_dialogs_image.rar - 文件所在路径 /core/img/ueditor/image/ 2. 确认按钮绑定键盘事件 - 增加键盘事件,回车与空格立即跳转 - 来源 /core/controller/Base.class.php -> public function show_message(){} - 改动文件 /core/img/message/xiaocms_msg.tpl.php 3. XiaoCMS v2.1.1 编辑器百度地图可以使用,对应文件已修改,添加地图设置宽高 - 后台编辑器 链接后面加 &width=100%&height=500px - 来源 /core/img/ueditor/dialogs/map/show.html - 修改文件内容 ```html
``` 4. XiaoCMS v2.1.2 - 地图功能正在完善 - 使用最小高度控制后台大小 - width:100%;height:100%;min-heihgt:200px ```html

``` - 增加一个新的地图文件,还未开发 ## XiaoCMS v2.2 1. 页面加载后视频显示元数据 video - preload - 来源 /core/img/ueditor/ueditor.all.min.js - 搜索 preload="none" - 替换 preload="metadata" 2. 自动跳转页面 点这返回列表 增加键盘事件 Esc - 改动文件 /core/img/message/xiaocms_msg.tpl.php 3. 去除 区块 多文件上传 去重处理 ```php // /@admin/controller/block.php // public function cacheAction() // $d[$value] = $t['content']['filename'][$key]; array_push($d, array($value, $t['content']['filename'][$key])); ``` ```php // /core/library/class.php // $replace_array /* "_blocklist(\\1); if (is_array(\$return)) foreach (\$return as \$img=>\$name) { ?>", */ "_blocklist(\\1); if (is_array(\$return)) foreach (\$return as \$value) { \$img = \$value[0]; \$name = \$value[1]; ?>", ``` ## XiaoCMS v3.0 1. 重置搜索功能,增加自定义字段,增加多段内容搜索 - 缺陷:英文逗号没有处理,被分成多段搜索词 ```php // /core/xiaocms.php xiaocms::load_file(CORE_PATH . 'library' . DS . 'class.php'); xiaocms::load_file(CORE_PATH . 'library' . DS . 'class2.php'); // ** 增加 ** // xiaocms::load_file(CORE_PATH . 'version.php'); ``` ```php // /core/controller/Base.class.php $this->db = xiaocms::load_class('Model'); $this->db2 = xiaocms::load_class('inkModel'); // ** 增加 ** // ``` ```php // /core/controller/index.php /** * 内容搜索 二次开发 * ?a=s 初始化 | & 分隔 | 英文逗号 , 多个内容 - t / n / ca / m * @param * f fileName 文件名称 | p postfix 文件名后缀 * t text 搜索文本 | n findName 查询字段 * ca catid 查询栏目 | m modelid 查询模型 | all 搜索自定义字段 * page 当前页码 | pagesize 每页数量 -- 分页 * @return * text 搜索内容 * page 当前页码 | pagesize 每页数量 * data 数据 | total 总共数量 | num 当前页数量 * @example * 默认值 -- f search | p html | ?a=s * ?a=s&all&t=1,2&n=title,description&ca=1,2&m=1,2 * ?a=s&f=s1&p=htm&page=10&pagesize=10 * bug缺陷 -- 英文逗号没有处理,被分成多段搜索词 */ public function sAction() { } // ** 增加方法 ** // ``` ```php // /core/library/class2.php -- 新建文件 ``` 2. 添加内容页面 推荐 文字与单选按钮绑定 ## XiaoCMS v3.1 1. 同栏目多组图删除bug修改 - 缺陷:栏目 - 编辑 - 多个组图,点击第二个组图的删除会先删除第一个组图对应的内容 - 原理:组图对应 li 的 id 一致,删除链接不包含组图的字段名称 ```php // /core/library/field.class.php - 435 // $str .= '
  • '; $str .= '
  • '; // /core/library/field.class.php - 438 // $str .= '删除
  • '; $str .= '删除'; ``` ```javascript // /core/img/js/xiaocms.js - var c // var c='
  • '; var c='
  • '; // /core/img/js/xiaocms.js // c+="删除
  • "; c+="删除"; // /core/img/js/xiaocms.js // html+="删除"; html+="删除"; // /core/img/js/xiaocms.js - 完整替换 function omnipotent(id,linkurl,title,close_type,w,h){if(!w){w=620}if(!h){h=420}$.sobox.pop({type:"iframe",width:w,height:h,title:title,showMask:false,iframe:linkurl})}function remove_relation(sid,id,name){var relation_ids=$("#"+name).val();if(relation_ids!=""){$("#"+sid).remove();var r_arr=relation_ids.split(",");var newrelation_ids="";$.each(r_arr,function(i,n){if(n!=id){if(i==0){newrelation_ids=n}else{newrelation_ids=newrelation_ids+","+n}}});$("#"+name).val(newrelation_ids)}}function showImg(_this){if(!_this.value){return false}$("body").append("
    ");$("#"+_this.id).mousemove(function(e){$("#Previewthumb").css({"top":(e.pageY+5)+"px","left":(e.pageX+2)+"px"})})}function hideImg(_this){$("#Previewthumb").remove()}function confirmurl(url,message){if(confirm(message)){redirect(url)}}function redirect(url){location.href=url}function get_kw(){$.post("../index.php?c=api&a=ajaxkw&id="+Math.random(),{data:$("#title").val()},function(data){if(data&&$("#keywords").val()==""){$("#keywords").val(data)}})}function removediv(fileid){$("#files_"+fileid).remove()}function add_null_file(obj){var id=parseInt(Math.random()*1000);var c='
  • ';c+='';c+='';c+="删除
  • ";$("#"+obj+"-sort-items").append(c)}function htmlList(obj,data,file,p){var id=parseInt(Math.random()*1000);var html='
  • ';html+='";html+='';html+="删除
  • ";$("#"+obj+"-sort-items").append(html)}function setC(){if($("#deletec").prop("checked")==true){$(".deletec").prop("checked",true)}else{$(".deletec").prop("checked",false)}}function confirm_delete(){$("#list_form").val("del");if(confirm("确认删除吗?")){$("#myform").submit()}}; ``` ## XiaoCMS v3.2 1. 可调用表单内容 - 修改文件 /core/library/class.php - 修改文件 /core/library/class2.php - 前置文件 /core/xiaocms.php - 24 行 引入 class2.php ```php # /core/xiaocms.php - 24 xiaocms::load_file(CORE_PATH . 'library' . DS . 'class2.php'); ``` ```php # /core/library/class.php # 函数内容 protected function handle_view_file($view_content){} # 变量内容 $regex_array 增加 '#{xiao:form\s+(.+?)\s?}#i', '#{\/xiao:form}#i', # 变量内容 $replace_array 增加 "_form(\"\\1\"); if(is_array(\$return)) foreach(\$return as \$key=>\$xiao) { ?>", "" # 增加函数 _form protected function _form($param) { $param = str_replace('desc', 'desc=1', $param); $param = str_replace('desc=1=', 'desc=', $param); $_param = explode(' ', $param); $param = array(); foreach ($_param as $p) { $mark = strpos($p, '='); if ($p && $mark !== false) { $var = substr($p, 0, $mark); $val = substr($p, $mark + 1); if (isset($var) && $var) $param[$var] = $val; } } $i = 1; $form = xiaocms::load_class('inkModel'); $data = $form->sqlForm($param); return $data; } ``` ```php # /core/library/class2.php # 类 class inkModel extends Model # 增加函数 public function sqlForm($param) public function sqlForm($param) { if(!$param['modelid']) exit('Modelid is not exits!'); $tableNameResult = $this->query("select tablename from ".$this->_prefix."model where modelid=".$param['modelid'].";")->fetchAll(PDO::FETCH_ASSOC); $tableName = $this->_prefix.$tableNameResult[0]['tablename']; $findResult = $this->query("select field from ".$this->_prefix."model_field where modelid=".$param['modelid'].";")->fetchAll(PDO::FETCH_ASSOC); $find = array(); foreach($findResult as $value) { array_push($find, $value['field']); } $sql = "select * from ".$tableName." where 1=1"; if($param['status']) { $sql .= " and status in (".$param['status'].")"; } else { $sql .= " and status=1"; } foreach($find as $value) { if($param[$value]) $sql .= " and ".$value." like '%".$param[$value]."%'"; } if($param['order']){ $sql .= " order by ".$param['order']; if($param['desc']) $sql .= " DESC"; } if($param['num']) $sql .= " limit ".$param['num']; $sql .= ";"; $data = $this->query($sql)->fetchAll(PDO::FETCH_ASSOC); return $data; } ``` ```html {xiao:form modelid=1} {xiao:php print_r($xiao);} {xiao:$xiao[name]} {/xiao:form} * 参数说明 modelid=1 必须参数 查询表单 ID=1 $xiao[name] 自定义字段 name 的值 status=0,1 审核状态 1 正常 0 未审核 默认显示正常字段 num=1 显示 1 条结果 name=2 自定义字段 name 中存在内容 2 order=id 按照字段 id 进行排序 order=name desc 按照自定义字段 name 倒序排列 ``` ## XiaoCMS v3.3 1. 区块编辑器增加视频 2. 改动文件 ```shell /@admin/controller/block.php /@admin/img/xiaocms.css /@admin/template/block_add.tpl.php /core/library/field.class.php ``` 3. 增加功能 1) 区块可上传视频, 限制文件格式 mp4,flv, 限制大小 100MB 2) 默认值与文件视频来回切换 3) 视频的几个参数: 自动播放 | 播放控件 | 循环播放 | 宽度100% 4) 纯文本或者视频形式 5) 在线查看视频状况 ## XiaoCMS v3.4 1. 可调用字段属性 字段-编辑-属性 - 修改文件 /core/library/class.php - 修改文件 /core/library/class2.php ```php # /core/library/class.php - 89 protected function handle_view_file($view_content) { $regex_array # 92 变量末尾增加内容 $replace_array # 118 变量末尾增加内容 } # 188 增加私有函数 protected function _field($param) {} # /core/library/class2.php - 215 增加公共函数 public function sqlField($param) {} ``` ```html {xiao:field modelid=0} {xiao:php print_r($xiao);} {xiao:$xiao[name]} {/xiao:field} * 参数说明 modelid=0 必须参数 查询模型 ID -- 0 栏目扩展 | n 内容模型 + 表单模型 $xiao[name] 字段属性 name 对应 find 内容 系统属性 -- modelid | field | name | isshow | pattern | tips | errortips | formtype | disabled setting 属性 -- size | width | height | content | items | preview | type | defaultvalue field 字段名称(栏目扩展字段名称 + 模型 content + 模型自定义字段名称) 可联合查询 eg. field=content,img isshow (未知) formtype 字段类型 input 单行文本 | textarea 多行文本 | editor 编辑器 | radio 单选按钮 | 复选框 | 下拉选择框 | file 单文件/图片上传 | files 多文件/图片上传 | 日期时间 | 相关内容字段 | 高级自定义字段 可联合查询 eg. formtype=input,textarea disabled 禁用 -- 没有值 all | 0 禁用 | 1 启用 num=1 显示 1 条结果 order=modelid desc 按照自定义属性 modelid 倒序排列 find 筛选 -- 只显示筛选的内容 | 可联合查询 多值为数组形式 eg. find=field,name modelid | field | name 字段别名 | isshow | pattern 数据校验 | tips 输入提示 | errortips 错误信息 | formtype | disabled | size 单行文本 输入框长度 | width 多行文本/编辑器 输入框宽度 | height 多行文本/编辑器 输入框高度| content 单选按钮/复选框/下拉选择框 选项列表(已处理成数组) | items | preview | type 单文件/图片上传/多文件/图片上传 允许格式| defaultvalue 默认值 setting -- 没有这个值 all | 0 系统属性 | 1 setting 属性 list -- 若 modelid 为一个值,则展示其所有内容,以字段名称为键,内容为值 ``` ## XiaoCMS v3.4.1 1. 修改安装数据库 用户名 admin 密码 admin ## XiaoCMS v3.4.2 - 修改 /core/library/class.php ```php protected function handle_view_file($view_content){ // 89行 $regex_array // 添加三个内容 -- show / show.html / html $replace_array // 添加三个内容 -- show / show.html / html } // 1. {show:array($xiao[himg], $xiao[img]), ...} // 若 $xiao[himg] 为 null , 则输出 '', 若有值, 则打印, 若为空, 则判断下一位 $xiao[img] // 2. {show.html:array($xiao[hcontent], $xiao[content], ...)} // show 的翻版, 打印 html 格式内容 // 3. {html:$xiao[content]} // 打印 $xiao[content] 的 html 形式, 等同于 // {xiao:function.htmlspecialchars_decode($xiao[content])} ``` ## XiaoCMS v3.4.2 - 完善搜索bug ```php # 代码 $getText = $this->getKeyInArray($text, $array, true); # 改善 $getText = $this->getKeyInArray($value, $array, true); ``` ## Gitee [解决码云出现git@gitee.com: Permission denied (publickey)](https://blog.csdn.net/dyy_csdn/article/details/81508809) [git 从远程拉取代码、推代码的步骤](https://www.cnblogs.com/l199616j/p/10103246.html) [博客系列9-绑定本地仓库到Gitee](https://zhuanlan.zhihu.com/p/362654741) ## Wiki [语雀操作文档](https://www.yuque.com/docs/share/47a943b3-f9c7-45dc-b1a9-5b0045f0d973) ## 测试地址 [XiaoCMS](http://xiaocms.inkscholar.cn/@admin/) 账密 admin ## 有待开发 1. 搜索 - 英文逗号 , 的处理 2. 搜索 - sql 语句 3. 搜索 - 1 && 2 4. 搜索 - {xiao:search}{/xiao:search}