</>
合肥网站工作室 HeFei Studio
首页 合肥网站设计 合肥网站建设 合肥网站优化 文章资讯 联系我们

帝国cms tag自动内链到文章功能

找到  /e/class/userfun.php  这个文件,在最后的部分添加新增函数,代码如下:


/**

 * 自动将文章内容中的Tag标签替换为名称格式的伪静态超链接(域名/tags-tagname.html)

 * @param string $content 文章内容

 * @return string

 */

function user_auto_add_tag_links($content){

    global $empire,$dbtbpre;

    if(empty($content)) return $content;


    // 1. 获取所有Tag标签,按字数从长到短排序(核心优化:防止短词拦截长词)

    // 比如同时存在“帝国CMS”和“帝国”两个TAG,优先替换长的,避免“帝国CMS”被拆碎

    $sql = $empire->query("select tagname from {$dbtbpre}enewstags order by length(tagname) desc, tagid desc");

    

    // 2. 排除HTML标签内部的属性(防止破坏图片路径、A标签等)

    $match_html = array();

    preg_match_all('/<[^>]+>/i', $content, $match_html);

    if (!empty($match_html[0])) {

        foreach ($match_html[0] as $k => $v) {

            $content = str_replace($v, "{#HTML_BLOCK_{$k}#}", $content);

        }

    }


    // 3. 循环遍历Tag,进行内链替换

    while($r=$empire->fetch($sql)) {

        $tag_name = $r['tagname'];

        

        // 【精准定制】将Tag名称进行URL编码,拼接成 /tags-名称.html

        // 使用 urlencode 可以完美兼容中文标签路径

        $tag_url = '/tags-' . urlencode($tag_name) . '.html';

        

        // 构建A标签

        $replace_str = '<a href="' . $tag_url . '" target="_blank" class="ecms-tag-link">' . $tag_name . '</a>';

        

        // 限制每篇文章中同一个Tag只替换 1 次,防止过度SEO

        $content = preg_replace('/' . preg_quote($tag_name, '/') . '/i', $replace_str, $content, 1);

    }


    // 4. 还原HTML标签

    if (!empty($match_html[0])) {

        foreach ($match_html[0] as $k => $v) {

            $content = str_replace("{#HTML_BLOCK_{$k}#}", $v, $content);

        }

    }


    return $content;

}

 


保存即可。


需要提前设置后台系统--》系统设置--》伪静态参数设置--》TAGS 信息列表页 伪静态 填写  tags-[!--tagname--].html 保存即可


修改伪静态,以上功能 tags的伪静态设置 前端显示效果:域名/tags-name.html 格式


nginx 服务器的伪静态代码如下:


rewrite ^/tags-(.+)\.html$ /e/tags/index.php?tagname=$1 last;


文章页需要修改内容调用代码如下:


<?=user_auto_add_tag_links($navinfor['newstext'])?>


后期在发布文章的过程中,只要tags里面符合文章的关键词,会自动添加到文章中对应的tags链接,但是这个有利有弊,请谨慎使用,比如说你的网站数据库tags有200个,只要文章中只要有tags的关键词,都会有一个链接指向。


准备开启您的网站建设项目?

资深主程直接对接,拒绝层层转包,欢迎随时联系交流。

微信:seogzs(请备注:建站)
邮箱:813510579@qq.com