::NoName Magazine 无名杂志 » Project Parasy » [PP插件] 会员头像展示Ajax缓存版0.5


2008-2-19 18:51 exgbit
[PP插件] 会员头像展示Ajax缓存版0.5

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

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

安装方法:

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

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

3、打开parasy_json_tab.php
找到[code] case 'home':
  dheader("Location: {$boardurl}");
  break;[/code]在下面添加[code]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;[/code]4、上传exgbit_avatar.js至include\javascript\文件夹下

5、打开discuz.htm
找到[code]<!--{if $show_cloud == 0}-->
<div class="maintable" align="left">
<span class="tip_i">New in NoName [/code]在上面加上[code]<div class="maintable" align="left">
<script type="text/javascript" src="$bbsdir/include/javascript/exgbit_avatar.js"></script>
<ul class="tabs">
<li class="normal" id="exgava" onclick="initHomeTabs_ex('exgava')">会员头像展示(点击刷新) ...</li>
</ul><table><tr><td>
<div id="home_tab_top_ex"></div><div id="home_tab_content_ex"></div></td></tr></table>
<script type="text/javascript">initHomeTabs_ex("exgava");</script></div>[/code]下载包: [url=http://www.51ok.com/downlink-803967047.html]http://www.51ok.com/downlink-803967047.html[/url]  (里面有两个文件exgbit_avatar.inc.php和exgbit_avatar.js)

预览:[url=http://www.csustbbs.net/bbs/]http://www.csustbbs.net/bbs/[/url]

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

2008-2-19 18:56 exgbit
这个会员展示功能可以即时“点击”刷新

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

Sai,知道什么原因不?

2008-2-19 18:59 exgbit
后来觉得可能两个公用某个相同的东东...

所以我的论坛目前干脆把头像展示直接读取switchHomeTabContentLoading_ex();就让它显示读取算了..反正可以点击刷新..

2008-2-19 19:16 anson
支持,(ll01) 如果是从最新发帖的用户群中随机抽取是不是会更好点?

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

2008-2-19 19:29 Sai
原来的home_tabs.js只能get一个Obj,所以要更新页面里面别的obj会出现你说的那种情况

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

======================
还有在FF下变成一竖列了。。。

2008-2-19 20:06 exgbit
...额
那暂时不用ajax好了....
参考hot_topic看看

2008-2-19 20:06 Sai
补充:
[code]
                @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;
                }
[/code]

来更新缓存

2008-2-19 21:51 exgbit
ajax冲突问题解决了哦~ 呵呵

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

可以说插件已经完成了~

剩下生成缓存参照PP的问题~

2008-2-19 22:13 anson
[quote]原帖由 [i]exgbit[/i] 于 2008-2-19 11:22 发表 [url=http://www.saicn.com/bbs/redirect.php?goto=findpost&pid=441377&ptid=6493][img]http://www.saicn.com/bbs/images/common/back.gif[/img] [img]/bbs/images/common/o_in_new.gif[/img][/url]
由于利用的是缓存,最新发帖的会员头像也只能1个小时后才能随机显示出来,这样可以吗? [/quote]
我觉得这样总比抽到一些万年潜水的头好,,还有这个会不会把没有头的也抽上来的./exgbit,你的网现在出错了.(ll05) 回来再试试,呵呵

2008-4-9 10:01 ray1980
文件地址已经失效

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.