discuzX2有关Archiver的代码分析 discuz教程 - discuz - 爱建站

,,cms教程,discuz教程,,

SEO SEO

首页  >   discuz > discuzX2有关Archiver的代码分析 discuz教程   >  正文

discuzX2有关Archiver的代码分析 discuz教程

2018-09-27 07:21:45 向站长提问 编辑: admin 阅读:

 

Archiver 为了提高搜索引擎收录,作为面向搜索引擎入口的同时,有些站长在不同的站之间也通过它来进行数据库的采集,之前版本的程序中并没有对 bbcode 进行解析,采集的数据原原本本的传到新站点,通过 bbcode 保留之前的文本格式,但X2在用户友好性方面对 archiver 做了改进,可以作为正常页面阅读,去掉了 bbcode 的标签,保留 bbcode 标签中的内容


Archiver 为了提高搜索引擎收录,作为面向搜索引擎入口的同时,有些站长在不同的站之间也通过它来进行数据库的采集,之前版本的程序中并没有对 bbcode 进行解析,采集的数据原原本本的传到新站点,通过 bbcode 保留之前的文本格式,但X2在用户友好性方面对 archiver 做了改进,可以作为正常页面阅读,去掉了 bbcode 的标签,保留 bbcode 标签中的内容。站长想保留原格式文本,可以修改代码,下面就对X2 处理 bbcode 的方式介绍一下。Discuz! X2.0 中,为 Archiver 作了一个单独的入口,打开页面后会看到 Archiver 的链接为 http://xxxxx.com/archiver/默认情况下,直接访问 archiver 文件下的 index.php文件。下面就来看看 index.php 入口文件都有哪些内容:


  1. define("IN_ARCHIVER", 1);//定义为archiver状态。
  2. chdir("../");//把目录切换到上级目录状态。
  3. $querystring = $_SERVER["QUERY_STRING"];//取得上一操作的url第一个‘?’后的字符串。
  4. if(!empty($_GET["action"])) {
  5.          $querystring = $_GET["action"]."-".$_GET["value"];//把&符号换成‘-’号。
  6. }
  7. if(substr($querystring, 0, 3) == "fid") {//判断上方获得的字符串中的字段,并赋值操作。
  8.          $_GET["mod"] = "forumdisplay";
  9.          $_GET["fid"] = intval(substr($querystring, 4));
  10. } elseif(substr($querystring, 0, 3) == "tid") {
  11.          $_GET["mod"] = "viewthread";
  12.          $_GET["tid"] = intval(substr($querystring, 4));
  13. }
  14. include "forum.php";//引入上级目录的forum.php文件。

复制代码


Discuz! X1.5 的区别在于,Discuz!X1.5 直接访问 forum.php,在文件里判断识别是否 IN_ARCHIVER。

Discuz! X2.0 版本中,希望 Archiver 能够过滤掉 bbcode  但是留下所有包含在 bbcode 中的内容。下面看看代码中是如何处理的,这个功能主要是 archivermessage();函数实现的。


  1. function archivermessage($message) {
  2.          return nl2br(preg_replace(
  3.                             array("/&(#\d{3,5};)/", "/\[hide=?\d*\](.+?)\[\/hide\]/is", "/\[\/?\w+=?.*?\]/"),
  4.                             array("&\\1","<b>**** Hidden Message *****</b>",""),//标签[][/]替换为空
  5.                    str_replace(
  6.                             array("&", """, "<", ">", "\t", "   ", "  "),
  7.                             array("&", """, "<", ">", "        ", "   ", "  "),
  8.                    $message)));
  9. }

复制代码


红色部分即为正则替换掉的标签部分。如果为了方便想通过 Archiver 做数据采集等可直接去掉相应代码即可。

温馨提示:在有许多的精品 DZ模板 ,如果你有需要,那么赶快去下载吧!


discuzX2有关Archiver的代码分析 discuz教程
http://www.yuedudg.cn/article/1052061.html

 

友情链接
discuz经验网 zblog之家 wp之家
cms综合网 织梦之家 phpcms之家
ecshop经验网 帝国cms常识


Tags: cms教程 discuz教程


手机浏览本文

discuzX2有关Archiver的代码分析  discuz教程

discuzX2有关Archiver的代码分析 discuz教程

站内推荐

网站分类

标签列表

关于我们
文章内容来源互联网仅供参考,如果还有疑问请联系我们!我们将竭力帮您解决您的问题
联系我们:

QQ: 397423577 

email:397423577@qq.com

微信:ganenboy