安装包
安装问题
与swoole部分函数冲突
安装时提示错误Cannot redeclare go() 解决方案如下
phpcms/libs/functions/global.func.php 1473行
go方法名修改
然后搜索cms下使用过go方法的地方 全部改为修改后的自定义方法名称即可
多图上传
如需加在修改栏目中:
/phpcms/libs/functions/extention.func.php 中添加方法
/** * 后台栏目管理中添加组图上传 messiah * 返回多图上传 * @param $field 多图字段名 * @param $catid 当前栏目ID * @param $value 多图字段值 */ function catimages($field,$catid,$value) { $list_str = ''; if($value) { $value = string2array(new_html_entity_decode($value)); if(is_array($value)) { foreach($value as $_k=>$_v) { $list_str .= "<div id='image_{$field}_{$_k}' style='padding:1px'><input type='text' name='{$field}_url[]' value='{$_v[url]}' style='width:310px;' ondblclick='image_priview(this.value);' class='input-text'> <input type='text' name='{$field}_alt[]' value='{$_v[alt]}' style='width:160px;' class='input-text'> <a href=\"javascript:remove_div('image_{$field}_{$_k}')\">".L('remove_out', '', 'content')."</a><img style=\"max-width:100px;max-height:100px;margin-left:40px;\" alt=\"{$_v[alt]}\" src=\"{$_v[url]}\" /></div>"; } } } else { $list_str .= "<center><div class='onShow' id='nameTip'>".L('upload_pic_max', '', 'content')." <font color='red'>50</font> ".L('tips_pics', '', 'content')."</div></center>"; } $string = '<input name="info['.$field.']" type="hidden" value="1"> <fieldset class="blue pad-10"> <legend>'.L('pic_list').'</legend>'; $string .= $list_str; $string .= '<div id="'.$field.'" class="picList"></div> </fieldset> <div class="bk10"></div> '; if(!defined('IMAGES_INIT')) { $str = '<script type="text/javascript" src="statics/js/swfupload/swf2ckeditor.js"></script>'; define('IMAGES_INIT', 1); } $str = '<script language="javascript" type="text/javascript" src="statics/js/content_addtop.js"></script>'; $authkey = upload_key("50,gif|jpg|jpeg|png|bmp,1"); $string .= $str."<div class='picBut cu'><a href='javascript:void(0);' onclick=\"javascript:flashupload('{$field}_images', '".L('attachment_upload')."','{$field}',change_images,'50,gif|jpg|jpeg|png|bmp,1','content','{$catid}','{$authkey}')\"/> ".L('select_pic')." </a></div>"; return $string; }
/phpcms/modules/admin/category.php 修改栏目edit方法中 $this->db->update 前添加以下
//取得图片列表 $catpics = $_POST['school_images_url']; //取得图片说明 $catpics_alt = isset($_POST['school_images_alt']) ? $_POST['school_images_alt'] : array(); $catpicsarray = $temp = array(); if(!empty($catpics)) { foreach($catpics as $key=>$pic) { $temp['url'] = $pic; $temp['alt'] = str_replace(array('"',"'"),'`',$catpics_alt[$key]); $catpicsarray[$key] = $temp; } } $catpicsarray = array2string($catpicsarray); $_POST['info']['school_images'] = $catpicsarray;
/phpcms/modules/admin/templates/category_edit.tpl.php 中添加对应代码
<tr> <th>图片:</th> <td><?php echo catimages('school_images',$catid,$school_images); ?></td> </tr>
添加文章中自动匹配填充内容
以专业库为例进行匹配
此例子接口地址为/phpcms/modules/content/search.php
**
* 获取专业信息
* 用于content_add.tpl.php页面渲染已有的专业数据
*
* @author Messiah 2023.07.28
* @param string $name
* @return array
*/
public function getMajorInfo()
{
$data = null;
$name = $_GET["name"];
if($name){
$major = $this->db->name("zyk")
->alias("z")
->join("zyk_data zd","z.id=zd.id")
->where('z.title',$name)
->field("zd.content,zd.category,zd.major_code,zd.major_level,zd.educational")
->find();
if($major){
$data = json_encode($major);
}
}
echo $data;
}
/phpcms/modules/content/templates/content_add.tpl.php 中加入js方法
$('#title').on('change', function () {
var name = $("#title").val()
var data = ''
$.ajax({
url:"index.php?m=content&c=search&a=getMajorInfo",//请求路径
type:"GET",
async:false,
data:{"name":name},
success:function (res) {// 接收服务器响应的值
// 此处撰写业务逻辑处理
if(res){
data = JSON.parse(res)
$("#category").val(data.category);
$("#content").val(data.content);
$("#major_code").val(data.major_code);
$("#major_level").val(data.major_level);
$("#educational").val(data.educational);
}
},//响应成功后的回调函数
error:function () {
alert("匹配专业名出错了...")
},//表示如果请求响应出现错误,会执行的回调函数
});
});
专业库更新
点击同步专业库,站群只用一个专业库
其中专业库名固定,栏目名固定,具体按需修改
按钮去后台菜单添加
protected $zyk = "专业库";// 专业库栏目名
protected $majorName = "招生专业";// 专业内容所在栏目名称
/**
* 专业库更新
*
* @author Messiah 2023.07.27
*/
public function updateMajorLib()
{
// 内容表名
$tablename = $this->cms->name("category")
->alias("c")
->join("model m","c.modelid=m.modelid")
->where("c.siteid",$this->siteid)
->where("c.catname",$this->majorName)
->limit(1)
->value('m.tablename');
if(!$tablename) showmessage(L('招生专业栏目不存在 或 模型表不存在'),'?m=admin&c=category&a=init&module=admin&menuid=43');
// 去重后专业名
$major = $this->cms->name($tablename)
->order("id","desc")
->group("title")
->column('title,id');
if(!$major) showmessage(L('招生专业下无专业文章'),'?m=admin&c=category&a=init&module=admin&menuid=43');
$major = array_column($major,"title","id");
// 专业库中已有的专业名
$zykMajor = $this->cms->name("zyk")
->order("id","desc")
->column('title');
// 比对取差集 (获取到专业库中没有的专业)
$diffIds = array_diff($major,$zykMajor);
if(!$diffIds) showmessage(L('无专业可更新'),'?m=admin&c=category&a=init&module=admin&menuid=43');
// 插入专业库
$news = $this->cms->name($tablename)
->where("id","IN",array_flip($diffIds))
->field("typeid,title,description,listorder,status,sysadd,islink,username,inputtime,updatetime")
->select()
->toArray();
$newsData = $this->cms->name($tablename."_data")
->where("id","IN",array_flip($diffIds))
->field("content,readpoint,paginationtype,maxcharperpage,paytype,allow_comment,category,major_code,major_level,educational")
->select()
->toArray();
// 专业库栏目id
$catid = $this->cms->name("category")->where("catname",$this->zyk)->value("catid");
foreach ($news as $key => $value) {
$value["catid"] = $catid;
$id = $this->cms->name("zyk")->insertGetId($value);
$newsData[$key]["id"] = $id;
}
// $this->cms->name("zyk")->insertAll($news);
$this->cms->name("zyk_data")->insertAll($newsData);
// 更新专业库栏目数量显示
$this->cms->name("category")->where("catname",$this->zyk)->update(["items"=>$this->cms->name("zyk")->count()]);
showmessage(L('operation_success'),'?m=admin&c=category&a=init&module=admin&menuid=43');
}
代码层增加数据表字段
// 获取库名
$config = pc_base::load_config('database');
$dbname = $config['default']['database'];
$sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$dbname' AND TABLE_NAME = '$tablename' AND COLUMN_NAME = '$column'";
$result = $this->db->query($sql);
if ($result->num_rows == 0) {
$sql = "ALTER TABLE $tablename ADD COLUMN $column $type";
$this->db->query($sql);
echo "字段添加成功";
}else{
echo "字段已存在";
}
添加数据表字段
/**
* 生成字段
*/
private function addColumn($dbname,$tablename,$column,$type="VARCHAR(255)")
{
$sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$dbname' AND TABLE_NAME = '$tablename' AND COLUMN_NAME = '$column'";
$result = $this->db->query($sql);
if ($result->num_rows == 0) {
$sql = "ALTER TABLE $tablename ADD COLUMN $column $type";
$this->db->query($sql);
}
}
自定义模块 - 自定义标签查询
在PHPCMS中,自定义的模块标签,需要安装好模块,才可以使用标签功能,也就是模块数据需要入库。