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

  • A+
所属分类:Emlog

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

此版本支持功能:

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 后台上传插件并启用就行了。

  1. <?php
  2. /*
  3. Plugin Name: 公共函数库
  4. Version: 1.0
  5. Plugin URL:
  6. Description: 计划封装常用的功能,又避免安装多个插件带来的效率低下
  7. Author: HN(QQ:14683667)
  8. Author URL: #
  9. */
  10. !defined('EMLOG_ROOT') && exit('access deined!');
  11. /**
  12.  * content2keyword(): 替换正文中出现的 TAG 标签为超链接,要求:将 < php echo $log_content;  >的地方,改为 < php echo content2keyword($log_content);  >
  13.  * 此函数效率相对较低,但暂时没有更好方法实现,主要是避免 将 a、img 标签中的 alt、title 等内容与 TAG 重复时的处理
  14.  * @param unknown_type $content
  15.  * @return unknown|mixed
  16.  */
  17. function content2keyword($content){
  18.         global $CACHE;
  19.         $tags = $CACHE->readCache('tags');
  20.         if( !is_array($tags) ){
  21.                 return $content;
  22.         }
  23.         //避免在链接、IMG 标签内重复添加,先将 A 标签和 IMG 标签匹配并保存起来
  24.         preg_match_all('/<([a|img]).*>.*<\/\\1>/Uis', $content$d);
  25.         ifis_array$d[0] ) ){
  26.                 foreach$d[0] as $key=>$val ){
  27.                         $flag = "{======{$key}======}";
  28.                         $content = str_replace($val$flag$content);
  29.                 }
  30.         }
  31.         //替换 tags 链接
  32.         foreach$tags as $val ){
  33.                 $tagurl = "<a title='{$val['tagname']}' href=\"".Url::tag($val['tagurl'])."\">".$val['tagname'].'</a>';
  34.                 $content = str_replace$val['tagname'], $tagurl$content );
  35.         }
  36.         //将之前保存的 A、IMG 标签,再替换回原样
  37.         ifis_array$d[0] ) ){
  38.                 foreach$d[0] as $key=>$val ){
  39.                         $flag = "{======{$key}======}";
  40.                         $content = str_replace($flag$val$content);
  41.                 }
  42.         }
  43.         return $content;
  44. }

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

 

历史上的今天:

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: