安装包

cms礼包.zip

安装问题

与swoole部分函数冲突

安装时提示错误Cannot redeclare go() 解决方案如下

phpcms/libs/functions/global.func.php 1473行
go方法名修改

然后搜索cms下使用过go方法的地方 全部改为修改后的自定义方法名称即可

多图上传

如需加在修改栏目中:
2023-07-27T06:18:20.png

  1. /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;
    }
    
    
  2. /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;
    
  3. /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("匹配专业名出错了...")
            },//表示如果请求响应出现错误,会执行的回调函数
    });
});

专业库更新

点击同步专业库,站群只用一个专业库
其中专业库名固定,栏目名固定,具体按需修改
按钮去后台菜单添加
2023-07-29T03:48:52.png

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中,自定义的模块标签,需要安装好模块,才可以使用标签功能,也就是模块数据需要入库。