首页 > 网站开发 > V9二次开发 > phpcms添加tags页面生成方法

V9二次开发

phpcms添加tags页面生成方法

2020-04-02 12:27:11V9二次开发
1、添加tags页面生成方法 找到根目录下 phpcms modules content 下面的 create_html php 文件,在这个类文件里面添加下面两个类方法
1、添加tags页面生成方法
 
    找到根目录下 phpcms/modules/content 下面的 create_html.php 文件,在这个类文件里面添加下面两个类方法:(添加到 batch_show() 方法后面吧,看下面的截图)
 
    /**
     * 批量生成标签页
     */
    public function tag()
    {
        //获取所有tag
        $this->html = pc_base::load_app_class('html');
 
        $keyword_db = pc_base::load_model('keyword_model');
        $t = $keyword_db->select();
        foreach ($t as $tags){
            $tag = $tags['keyword'];
            $datas = $this->getTagList($tag);
            //$tag = iconv('utf-8', 'gbk', $tag);//如果用的是gbk格式的phpcmsv9这句不用加,若果用的是utf-8版本的,在本地测试需要加,线上不用加,否则会出现页面404错误。
            $this->html->tag('tag', $tag, $datas);
        }
 
        showmessage(L('operation_success'),HTTP_REFERER);
    }
 
    /**
     * 获取关键词关联文章数据
     * @param $tagName
     * @return mixed
     */
    public function getTagList($tagName)
    {
        $tag = $tagName;
        $keyword_db = pc_base::load_model('keyword_model');
        $keyword_data_db = pc_base::load_model('keyword_data_model');
 
        //获取标签id
        $r = $keyword_db->get_one(array('keyword'=>$tag, 'siteid'=>$this->siteid), 'id');
        if (!$r['id']) showmessage('不存在此关键字!');
        $tagid = intval($r['id']);
 
        $page = max($_GET['page'], 1);
        $pagesize = 20;
        $where = '`tagid`=\''.$tagid.'\' AND `siteid`='.$this->siteid;
        $infos = $keyword_data_db->listinfo($where, '`id` DESC', $page, $pagesize);
        $pages = $keyword_data_db->pages;
        $total = $keyword_data_db->number;
        $arrRes['pages'] = $pages;
        $arrRes['total'] = $total;
        if (is_array($infos)) {
            $datas = array();
 
            foreach ($infos as $info) {
                list($contentid, $modelid) = explode('-', $info['contentid']);
                $this->db->set_model($modelid);
                $res = $this->db->get_one(array('id'=>$contentid), 'title, description, url, inputtime, style');
                $res['title'] = str_replace($tag, ''.$tag.'', $res['title']);
                $res['description'] = str_replace($tag, ''.$tag.'', $res['description']);
                $datas[] = $res;
            }
        }
 
        $arrRes['info'] = $datas;
 
        return $arrRes;
    }
 
2、修改 html.class.php 文件 找到根目录下 phpcms/modules/content/classes 下面的 html.class.php 文件,然后在文件中添加如下代码:
 
 
    /**
     * 生成tag页面
     * @param $file
     * @param $tagName
     * @param string $data
     * @return bool|int|void
     */
    public function tag($file, $tagName, $data='')
    {
        $file = PHPCMS_PATH.safe_replace($file).'/'.$tagName.'.html';//这是tags页面url规则,即,你想把生成的tags放在哪,怎么命名
        $datas = $data['info'];
        $total = $data['total'];
        $pages = $data['pages'];
        $siteid = $this->siteid;
        $style = $this->sitelist[$siteid]['default_style'];
        if (!$total || !trim($tagName)) {
            return false;
        }
        ob_start();
        include template('content','tag_list',$style);
        return $this->createhtml($file);
    }
3、添加模板文件
在你使用的模板文件里的content文件夹下添加tag_list.html模板文件,因为在上面第二步中生成tags页面使用的是模板里面的tag_list.html文件。(如果你用的是系统默认模板,这步就不需要做了)
 
4、tag_list.html页面的具体使用
 
{$tag}:当前标签名称
{$total}:当前标签下关联的文章数
$datas:当前标签关联的文章的相关数据,可以直接loop循环输出文章列表,就像在列表页循环输出文章列表一样
{loop $datas $r}
 
  •  
     
{$[tiltle]}{$r[title]}{date('Y-m-d',$r[inputtime])}
     
{$r[description]}
 
 {/loop}
 
5、在后台添加生成tags页面的功能菜单
 
扩展——菜单管理——内容——发布管理——添加子菜单
 
 
当然了,生成的tag页面也可以用英文,在phpcms的公共函数库iconv.func.php文件中就有一个函数函数是中文转英文的,如果不找不到也没关系,因为在phpcmsv9在将新的tag标签存入数据表时将tag转成了拼音存入数据库,也就是说tag数据表中不仅保存了tag的原来的名字,还保存了拼音。//获取所有tag 和//获取标签id 中的keyword 换成字段 pinyin 就可以

文章评论

  • 加我请扫码

    工作时间

    周一至周日 9:00-18:00

  • 如果本站对你有帮助可以通过扫码支付打赏下哦!

    • 微信收款码
    • 支付宝收款码