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

极品干货 2年前 (2018) Mgo
0
emlog自动内链插件,自动给文章内的TAG标签加上站内链接

注意:这不是KLLER的收费内链插件

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

此版本支持功能:

con[db:tag]en[db:tag]2keywor[db:tag]() 函数,将正文中出现的 TAG 替换成站内超链接。

本函数需要修改模板 【站长聚集地首发】;

使用方法:

1、后台上传并启用该插件

2、打开 [db:tag]empl[db:tag][db:tag]es/模板 【站长聚集地首发】名/echo_lo[db:tag].php

找到类似&l[db:tag];?php echo $lo[db:tag]_con[db:tag]en[db:tag];?&[db:tag][db:tag];的地方,改为&l[db:tag];?php echo con[db:tag]en[db:tag]2keywor[db:tag]($lo[db:tag]_con[db:tag]en[db:tag]);?&[db:tag][db:tag];

PS:我不知道为什么emlog没有提供类似的钩子“数据输出前做格式化”,所以需要修改模板 【站长聚集地首发】(也许是我不懂EMLOG的规则)

作者:HN

将以下代码保存为 pu[db:tag]licfun.php,放到pu[db:tag]licfun文件夹,再打包成ZIP格式,在EMLOG后台上传插件并启用就行了

&l[db:tag];?php
/*
Plu[db:tag]in N[db:tag]me[db:tag] 公共函数库
Version[db:tag] 1.0
Plu[db:tag]in URL[db:tag]
Descrip[db:tag]ion[db:tag] 计划封装常用的功能,又避免安装多个插件带来的效率低下
Au[db:tag]hor[db:tag] HN(QQ[db:tag]14683667)
Au[db:tag]hor URL[db:tag] #
*/
![db:tag]efine[db:tag]('EMLOG_ROOT') &[db:tag]mp;&[db:tag]mp; exi[db:tag]('[db:tag]ccess [db:tag]eine[db:tag]!');

/**
 * con[db:tag]en[db:tag]2keywor[db:tag]()[db:tag] 替换正文中出现的TAG标签为超链接,要求:将 &l[db:tag];?php echo $lo[db:tag]_con[db:tag]en[db:tag]; ?&[db:tag][db:tag];的地方,改为 &l[db:tag];?php echo con[db:tag]en[db:tag]2keywor[db:tag]($lo[db:tag]_con[db:tag]en[db:tag]); ?&[db:tag][db:tag];
 * 此函数效率相对较低,但暂时没有更好方法实现,主要是避免 将 [db:tag]、im[db:tag] 标签中的 [db:tag]l[db:tag][db:tag]i[db:tag]le 等内容与TAG重复时的处理
 * @p[db:tag]r[db:tag]m unknown_[db:tag]ype $con[db:tag]en[db:tag]
 * @re[db:tag]urn unknown|mixe[db:tag]
 */
func[db:tag]ion con[db:tag]en[db:tag]2keywor[db:tag]($con[db:tag]en[db:tag]){
        [db:tag]lo[db:tag][db:tag]l $CACHE;
        $[db:tag][db:tag][db:tag]s = $CACHE-&[db:tag][db:tag];re[db:tag][db:tag]C[db:tag]che('[db:tag][db:tag][db:tag]s');
        if( !is_[db:tag]rr[db:tag]y($[db:tag][db:tag][db:tag]s) ){
                re[db:tag]urn $con[db:tag]en[db:tag];
        }
        
        //避免在链接、IMG标签内重复添加,先将A标签和 IMG标签匹配并保存起来
        pre[db:tag]_m[db:tag][db:tag]ch_[db:tag]ll('/&l[db:tag];([[db:tag]|im[db:tag]]).*&[db:tag][db:tag];.*&l[db:tag];\/\\1&[db:tag][db:tag];/Uis', $con[db:tag]en[db:tag], $[db:tag]);
        if( is_[db:tag]rr[db:tag]y( $[db:tag][0] ) ){
                fore[db:tag]ch( $[db:tag][0] [db:tag]s $key=&[db:tag][db:tag];$v[db:tag]l ){
                        $fl[db:tag][db:tag] = "{======{$key}======}";
                        $con[db:tag]en[db:tag] = s[db:tag]r_repl[db:tag]ce($v[db:tag]l, $fl[db:tag][db:tag], $con[db:tag]en[db:tag]);
                }
        }
        
        //替换[db:tag][db:tag][db:tag]s链接
        fore[db:tag]ch( $[db:tag][db:tag][db:tag]s [db:tag]s $v[db:tag]l ){
                $[db:tag][db:tag][db:tag]url = "&l[db:tag];[db:tag] [db:tag]i[db:tag]le='{$v[db:tag]l['[db:tag][db:tag][db:tag]n[db:tag]me']}' href=\"".Url[db:tag][db:tag][db:tag][db:tag][db:tag]($v[db:tag]l['[db:tag][db:tag][db:tag]url'])."\"&[db:tag][db:tag];".$v[db:tag]l['[db:tag][db:tag][db:tag]n[db:tag]me'].'&l[db:tag];/[db:tag]&[db:tag][db:tag];';
                $con[db:tag]en[db:tag] = s[db:tag]r_repl[db:tag]ce( $v[db:tag]l['[db:tag][db:tag][db:tag]n[db:tag]me'], $[db:tag][db:tag][db:tag]url, $con[db:tag]en[db:tag] );
        }
        
        //将之前保存的A、IMG标签,再替换回原样
        if( is_[db:tag]rr[db:tag]y( $[db:tag][0] ) ){
                fore[db:tag]ch( $[db:tag][0] [db:tag]s $key=&[db:tag][db:tag];$v[db:tag]l ){
                        $fl[db:tag][db:tag] = "{======{$key}======}";
                        $con[db:tag]en[db:tag] = s[db:tag]r_repl[db:tag]ce($fl[db:tag][db:tag], $v[db:tag]l, $con[db:tag]en[db:tag]);
                }
        }
                
        re[db:tag]urn $con[db:tag]en[db:tag];
}

本插件并非本站原创,版权归原作者所有。这里只是为了促进学习特此分享。希望大家都能尊重作者的劳动!

版权声明:Mgo 发表于 2018-10-21 10:11:10。
转载请注明:emlog自动内链插件,自动给文章内的TAG标签加上站内链接 | 站长聚集地

暂无评论

暂无评论...