当前位置:首页 » 好文分享 » 详情

    emlog自动内链插件,自动给文章内的TAG标签加上站内链接

    公共函数库的插件编写初衷是“将小功能合并到一个插件,方便安装又避免多个插件的效率降低”。

    此版本支持功能:
    content2keyword() 函数,将正文中出现的 TAG 替换成站内超链接。
    本函数需要修改模板;

    使用方法:
    1、后台上传并启用该插件
    2、打开 templates/模板名/echo_log.php
    找到类似<?php echo $log_content;?>的地方,改为<?php echo content2keyword($log_content);?>
    PS:我不知道为什么emlog没有提供类似的钩子“数据输出前做格式化”,所以需要修改模板(也许是我不懂EMLOG的规则)
    作者:HN

    将以下代码保存为 publicfun.php,放到publicfun文件夹,再打包成ZIP格式,在EMLOG后台上传插件并启用就行了。
    <?php
    /*
    Plugin Name: 公共函数库
    Version: 1.0
    Plugin URL:
    Description: 计划封装常用的功能,又避免安装多个插件带来的效率低下
    Author: HN(QQ:14683667)
    Author URL: #
    */
    !defined('EMLOG_ROOT') && exit('access deined!');
    
    /**
     * content2keyword(): 替换正文中出现的TAG标签为超链接,要求:将 <?php echo $log_content; ?>的地方,改为 <?php echo content2keyword($log_content); ?>
     * 此函数效率相对较低,但暂时没有更好方法实现,主要是避免 将 a、img 标签中的 alt、title 等内容与TAG重复时的处理
     * @param unknown_type $content
     * @return unknown|mixed
     */
    function content2keyword($content){
            global $CACHE;
            $tags = $CACHE->readCache('tags');
            if( !is_array($tags) ){
                    return $content;
            }
            
            //避免在链接、IMG标签内重复添加,先将A标签和 IMG标签匹配并保存起来
            preg_match_all('/<([a|img]).*>.*<\/\\1>/Uis', $content, $d);
            if( is_array( $d[0] ) ){
                    foreach( $d[0] as $key=>$val ){
                            $flag = "{======{$key}======}";
                            $content = str_replace($val, $flag, $content);
                    }
            }
            
            //替换tags链接
            foreach( $tags as $val ){
                    $tagurl = "<a title='{$val['tagname']}' href=\"".Url::tag($val['tagurl'])."\">".$val['tagname'].'</a>';
                    $content = str_replace( $val['tagname'], $tagurl, $content );
            }
            
            //将之前保存的A、IMG标签,再替换回原样
            if( is_array( $d[0] ) ){
                    foreach( $d[0] as $key=>$val ){
                            $flag = "{======{$key}======}";
                            $content = str_replace($flag, $val, $content);
                    }
            }
                    
            return $content;
    }

    本插件并非本站原创,版权归原作者所有。这里只是为了促进学习特此分享。希望大家都能尊重作者的劳动!
    打赏
    X
    打赏方式:
    • 支付宝
    • 微信
    • QQ红包

    打开支付宝扫一扫
    日期:2017年09月12日 20:32:30 星期二   分类:好文分享   浏览(33955)
    本文地址:https://www.blogs.hk/post-2558.html   [百度已收录]
    声明:本页信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!
    版权所有:《博客之家
    文章标题:《emlog自动内链插件,自动给文章内的TAG标签加上站内链接
    除非注明,文章均为 《博客之家》 原创
    转载请注明本文短网址:https://www.blogs.hk/post-2558.html  [生成短网址]

    留言咨询

    自动获取QQ

    昵称

    邮箱

    网址

        站点统计

        • 收录网址:3370 个
        • 发布文章:3008 条
        • 在线人数:1人
        • 总访问量:270525701次
        • 本站运行:12年5月3天
        Copyright © 2025 博客之家 版权所有  
        關於本站免責聲明sitemap新站登錄