联系官方销售客服

1835022288

028-61286886

求助 版主:官方研发技术组
火车头采集的时候,测试发布失败,栏目也获取到了,发布不成
类型:迅睿CMS 更新时间:2024-04-22 13:14:22 火车头采集

火车头采集的时候出现发布失败,我是按照火车头发布规范写的模块,已经可以获取到栏目,但是发布失败,测试的时候提示这个

image


image

image

image


回帖
  • 开源社区技术-陈老师
    #1楼    开源社区技术-陈老师
    2024-03-10 15:00:02
    Chrome 1

    image
    这里有一个发布失败信息,你没有截图完整,主要看这个代码下方的提示,提示为什么会失败
  • 王生11
    #2楼    王生11
    2024-03-10 15:04:01
    Edge 1
    开源社区技术-陈老师
    image
    ,大佬帮我看看谢谢
  • 开源社区技术-陈老师
    #3楼    开源社区技术-陈老师
    2024-03-10 15:07:02
    Chrome 0
    点测试日志旁边的【浏览器查看
  • 王生11
    #4楼    王生11
    2024-03-10 15:08:56
    Edge 0
    开源社区技术-陈老师
    image
  • 小波工作室
    #5楼    小波工作室
    2024-03-10 15:11:37
    Chrome 0
    30元帮你排查,需要的加QQ
  • 开源社区技术-陈老师
    #6楼    开源社区技术-陈老师
    2024-03-10 15:13:21
    Chrome 0
    这个说明是你入库脚本的php程序有问题,发一下完整的php入库程序文件内容,看有没有改对参数
  • 王生11
    #7楼    王生11
    2024-03-10 15:19:10
    Edge 0
    <?php
    
    
    $this->_module_init('news'); // news 是模块目录
    
    if ($_GET['action'] == 'category') {
        $this->module['category'] = \Phpcmf\Service::L('category', 'module')->get_category($this->module['share'] ? 'share' : $this->module['dirname']);
        if (!$this->module['category']) {
            echo '模块【'.$this->module['dirname'].'】没有创建栏目';
        }
        foreach ($this->module['category'] as $t) {
            if ($t['child'] == 0 && $t['tid'] == 1) {
                echo '<h1>'.$t['name'].'<=>'.$t['id'].'</h1>'.PHP_EOL;
            }
        }
    
    } else {
        // 入库数据
    
        $data = $_REQUEST;
    
        // 发布者id 1
        $data['uid'] = 1;
    
        // 发布者笔名 admin
        $data['author'] = 'admin';
    
        // 主表字段
        $fields[1] = $this->get_cache('table-'.SITE_ID, $this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR));
        $cache = $this->get_cache('table-'.SITE_ID, $this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR.'_category_data'));
        $cache && $fields[1] = array_merge($fields[1], $cache);
    
        // 附表字段
        $fields[0] = $this->get_cache('table-'.SITE_ID, $this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR.'_data_0'));
    
        // 去重复
        $fields[0] = array_unique($fields[0]);
        $fields[1] = array_unique($fields[1]);
        
        // 格式化入库字段
        
        // 一般是格式化非文本类的字段(例如多文件上传、复选框、联动字段等等)
        // 这里需要按采集资料的格式入库格式化字段,
        
        
        // 开始归类存储
    
        $save = [];
    
        // 主表附表归类
        foreach ($fields as $ismain => $field) {
            foreach ($field as $name) {
                isset($data[$name]) && $save[$ismain][$name] = $data[$name];
            }
        }
        if (!$data['catid']) {
           exit('栏目为空');
        }
    
        $save[1]['uid'] = $save[0]['uid'] = $data['uid'];
        $save[1]['catid'] = $save[0]['catid'] = $data['catid'];
    
        $save[1]['url'] = ''; // 地址留空,系统会自动生成
        $save[1]['status'] = 9; //9表示正常发布,1表示审核里面
        $save[1]['hits'] = 0; // 阅读数
        $save[1]['displayorder'] = 0; // 排序权重值,默认填写0
        $save[1]['link_id'] = 0; // 填写0不管他
        $save[1]['inputtime'] = SYS_TIME; // 发布时间设置成为当前时间
        $save[1]['updatetime'] = SYS_TIME; // 更新时间也设置成为当前时间,关于时间采集如果是这种格式2022-12-12xx,那么需要使用strtotime函数转换成时间戳入库
        $save[1]['inputip'] = '127.0.0.1'; // 发布者ip地址
        
        //$save[1]['keywords'] = dr_get_keywords( $save[1]['title']); // 按插件提取关键词
        
        //$save[1]['description'] = dr_get_description( $save[0]['content'], 100); // 在内容里面提取100个子作为描述
    
        // 验证标题重复
        if ($this->content_model->table(SITE_ID.'_'.MOD_DIR)->where('title', $save[1]['title'])->counts()) {
            echo '重复';exit;
        }
    
        $rt = $this->content_model->save_content(0, $save);
    
        if ($rt['code']) {
            /*
            // 用于发布成功后生成静态文件代码
            //dr_html_auth($_SERVER['SERVER_ADDR']);
            //dr_catcher_data(SITE_URL.'index.php?s='.MOD_DIR.'&c=html&m=showfile&id='.$rt['id']);
            $atcode = 'chtml_'.SITE_ID.'_'.MOD_DIR.'_'.$rt['code'];
            \Phpcmf\Service::L('cache')->set_auth_data($atcode, $rt['code'], SITE_ID);
            dr_catcher_data(SITE_URL.'index.php?s='.MOD_DIR.'&c=html&m=showfile&id='.$rt['code'].'&atcode='.$atcode);
    $save[1]['id'] = $save[0]['id'] = $rt['code'];
    \Phpcmf\Service::L('router')->show_url(\Phpcmf\Service::C()->module, $save[1]);
            */
            exit('成功');
        } else {
            exit('失败');
        }
    
    }
    
    exit;
    开源社区技术-陈老师 我是复制的我们那个规范文章里的
  • 开源社区技术-陈老师
    #8楼    开源社区技术-陈老师
    2024-03-10 19:02:32
    Chrome 0
    把exit中文内容改成数字,然后发布看报哪个文字,再定位到哪行代码去排查
    满意答案
  • 小鱼儿
    #9楼    小鱼儿
    2024-03-10 21:40:40
    Edge 0
    断点打印调试,看哪里有问题,在改改就行了,先确定你自己的这个模块是news吗
    $this->_module_init('news'); // news 是模块目录
  • 王生11
    #10楼    王生11
    2024-03-10 21:42:38
    Edge 0
    小鱼儿 是news模块,我都没有新增模块,用的自带的,我栏目都获取成功了呢
  • 小鱼儿
    #11楼    小鱼儿
    2024-03-10 21:47:53
    Edge 0
    那你在插入前后打印一下数据,看走到哪出的问题,在调试呗
  • 小鱼儿
    #12楼    小鱼儿
    2024-03-10 22:00:56
    Edge 0

    建议在方法开头加个编码,这样你返回的报错信息就应该是中文而不是乱码了,看报错改代码

     header("Content-type:text/html;charset=utf-8");
  • 王生11
    #13楼    王生11
    2024-03-10 22:31:55
    Edge 0
    小鱼儿 我加了还是乱码,我重新装了一个默认的xunruicms,用的自带的数据,还是错误
  • Chien
    #14楼    Chien
    2024-03-10 23:03:10
    Chrome 0
    建议用六楼的办法,改成数字试一试,你看你都返回的乱码呀,服务器输出的中文乱码了,改成数字或者英文试试看
  • 小黄人 18html
    #15楼    小黄人 18html
    2024-03-11 09:24:58
    Chrome 0
    30元帮你排查,需要的加QQ 187013488
  • 王生11
    #16楼    王生11
    2024-04-22 13:14:22
    Chrome 0
    @开源社区技术-陈老师:感谢提示