exgbit


disconnected
主题工具

[PP插件] 会员头像展示Ajax缓存版0.5

... 发表于 2008-2-19 18:51  ... 12087 次点击

/*  Project Parasynthesis 插件
会员头像展示Ajax缓存版
版本:0.5
exgbit(果比)
支持站:http://saicn.com/bbs/
邮箱:exgbit@126.com
*/

花了一个白天时间,把它做了出来,根据上次Sai说的那个思路 ---->
利用计划任务定时更新缓存(一次从数据库随机抽取20张头像),首页参照最新讨论的Ajax方式随机读取其中6张,显示在首页
由于跟最新讨论利用的是同一个Ajax,目前出现了一个问题...这个放后面说。

安装方法:

1、上传exgbit_avatar.inc.php文件至include\crons\文件夹下

2、到后台添加计划任务,设置每小时更新一次。

3、打开parasy_json_tab.php
找到
case 'home':
  dheader("Location: {$boardurl}");
  break;

在下面添加
case 'json_exg_ava':
require_once DISCUZ_ROOT.'./forumdata/cache/cache_exg_ava.php';
$top = array();
$i = 0;
foreach($_DCACHE['exgava'] as $exgava) {
$i++;
$exga[$i]['uidav'] = $exgava['uidav'];
$exga[$i]['picav'] = $exgava['picav'];
$exga[$i]['nameav'] = iconv('gbk', 'utf-8', $exgava['nameav']);  $exga[$i]['nicknameav'] = iconv('gbk', 'utf-8', $exgava['nicknameav']);
}
header('Content-type: text/plain; charset=utf-8');
header('Cache-control: no-cache, must-revalidate');
if (function_exists('json_encode')) {
$encoded = json_encode($exga);
} else {
$encoded = Zend_Json::encode($exht);
}
echo $encoded;
break;

4、上传exgbit_avatar.js至include\javascript\文件夹下

5、打开discuz.htm
找到
<!--{if $show_cloud == 0}-->
<div class="maintable" align="left">
<span class="tip_i">New in NoName

在上面加上

下载包: http://www.51ok.com/downlink-803967047.html   (里面有两个文件exgbit_avatar.inc.php和exgbit_avatar.js)

预览:http://www.csustbbs.net/bbs/

[ 本帖最后由 exgbit 于 2008-2-19 18:56 编辑 ]

本主题共有 10 条回复 | 回到顶部
#1 - 2008-2-19 18:56
exgbit 地球
这个会员展示功能可以即时“点击”刷新

上面说有个问题,就是打开首页时,最新讨论和这个头像展示,有一定几率只出现一个,另一个会一只显示"正在读取..."

Sai,知道什么原因不?
#2 - 2008-2-19 18:59
exgbit 地球
后来觉得可能两个公用某个相同的东东...

所以我的论坛目前干脆把头像展示直接读取switchHomeTabContentLoading_ex();就让它显示读取算了..反正可以点击刷新..
#3 - 2008-2-19 19:16
anson 广州
支持, 如果是从最新发帖的用户群中随机抽取是不是会更好点?
#4 - 2008-2-19 19:22
exgbit 地球
由于利用的是缓存,最新发帖的会员头像也只能1个小时后才能随机显示出来,这样可以吗?
#5 - 2008-2-19 19:29
Sai 桂林
原来的home_tabs.js只能get一个Obj,所以要更新页面里面别的obj会出现你说的那种情况

那个缓存其实可以不用计划任务,可以参照ParasyCore.php里的function topic_update()

======================
还有在FF下变成一竖列了。。。
#6 - 2008-2-19 20:06
exgbit 地球
...额
那暂时不用ajax好了....
参考hot_topic看看
#7 - 2008-2-19 20:06
Sai 桂林
补充:
                @include(DISCUZ_ROOT.'./forumdata/cache/parasy_topic_answered.php');
                if((@!include('forumdata/cache/parasy_topic_answered.php')) || $topics_expiration < time()) {
                        $topic = topic_update('answered','t.lastpost DESC');
                } else {
                        $topic = $topics;
                }

来更新缓存
#8 - 2008-2-19 21:51
exgbit 地球
ajax冲突问题解决了哦~ 呵呵

第一次读取首页时,采用index.php读取,然后用ajax方式覆盖原php读取内容~这就避免了冲突。

可以说插件已经完成了~

剩下生成缓存参照PP的问题~
#9 - 2008-2-19 22:13
anson 广州

QUOTE:
原帖由 exgbit 于 2008-2-19 11:22 发表
由于利用的是缓存,最新发帖的会员头像也只能1个小时后才能随机显示出来,这样可以吗?

我觉得这样总比抽到一些万年潜水的头好,,还有这个会不会把没有头的也抽上来的./exgbit,你的网现在出错了. 回来再试试,呵呵
#10 - 2008-4-9 10:01
ray1980 无锡
文件地址已经失效
看完之后有话想说?那就帮楼主加盖一层吧!

在回复之前你需要先进行登录
用户名 / UID
密码
Project Parasynthesis | Based on Discuz! 5.5.0 | Thanks to Livid
About | Help | Developer | N2Design
清除 Cookies - 联系我们 - 无名杂志 - Archiver - Mobile
Processed in 0.984067 second(s), 8 queries, Gzip enabled