SetYun-教您优惠购买云主机!

标题: DiscuzX2新添加关联链接 [打印本页]

作者: SetYun    时间: 2018-10-20 10:40
标题: DiscuzX2新添加关联链接
在 X2.0 中增加了关联链接,可以在指定范围内把 指定的文字 加上链接。
在 后台->运营->关联链接 处设置。

这里可以直接 添加、删除、更新 关联链接,并且可以选择该链接分别在 文章、论坛主题、群组主题、日志 中是否启用。

我们分析下这个代码的执行过程。
首先这个功能的路径是 /admin.php?action=misc&operation=relatedlink ,
我们根据这个链接可以定位到代码在  /source/admincp/admincp_misc.php 中,打开这个文件,搜 relatedlink

看到这样的代码:




当直接打开这个页面的时候,就是显示默认的已经存在的关联链接。
当点击 提交 的时候,会做三个处理。
1.删除处理
         如果提交之前,把某些关联链接前的 删除 勾打上的话,那么这里会先处理 删除 的操作。
代码为:



2.更新操作
       如果在操作之前,已经存在的关联链接被修改过,那么在提交的时候,这些链接会先做下更新。
对应的代码为:



3.新添加的操作
        在提交前,如果有新添加的管链链接,则会执行相应的代码插入到数据中。
对应的代码为:



需要注意的时候,不管是更新还是新添加, 关联链接 在进入数据库之前,关于在那些模块启用的地方,都用了二进制形式来控制在那里显示,然后再变为 10 进制存的。
存储完以后,紧跟着做了缓存的更新,对应的代码是:



关于的缓存的更新,需要查看 /source/function/function_cache.php
然后调用了 /source/function/cache/cache_relatedlink.php


从这里能看到,最后缓存存到了 pre_common_syscache 中,其中 cname 就是 relatedlink 。

我们在看下前台发帖子等时候,使用我们刚刚添加的 关联链接的情况。

当我们查看帖子的时候,执行的文件是 /source/module/forum/forum_viewthread.php 文件。
在这个文件中,先得到设置在帖子中显示的关联链接,相应的代码是:




把得到的 关联链接 存放到了全局变量 $_G 中,然后在 模板文件 中使用。
显示帖子的时候调用的模板文件是:/template/default/forum/viewthread.htm 文件。
这个文件相关的代码为:


然后执行了 js 的 relatedlinks 函数,该函数在 /static/js/common.js

通过这个文件中的 js 方法,使得 关联链接 在页面中显示。






欢迎光临 SetYun-教您优惠购买云主机! (http://news.setyun.cn/) Powered by Discuz! X3.3