本帖最后由 scckfzx 于 2008-11-11 01:22 编辑
由于UCH的个人动态信息是按时间排序的,因此大量的动态信息覆盖了一些站长希望能长期出现在首页的动态信息。
花了一下午对Uchome程序进行了修改,终于达到效果了,
并且实现后台可管理日志、博客、相册等所有UCH中的事件置顶操作和取消置顶操作。
修改方法(修改之前备份你们的文件啊)
1、通过PHPMYADMIN执行SQL语句:
alter table uchome_feed add column up int not null default '0'
目的:在事件表中添加up字段标识是否置顶。
2、修改source/space_feed.php文件:
找到ORDER BY dateline DESC (约71行)
修改为:ORDER BY up DESC, dateline DESC 目的:将动态排序方式为 置顶为第一排序,时间为第二排序。
找到(约270,注意这一段程序中有个很容易混淆的一段相似代码)
if($a_value['dateline']>=$_SGLOBAL['today']) {
$list['today'][] = $a_value;
} elseif ($a_value['dateline']>=$_SGLOBAL['today']-3600*24) {
$list['yesterday'][] = $a_value;
} else {
$theday = sgmdate('Y-m-d', $a_value['dateline']);
$list[$theday][] = $a_value;
}
修改为:
if($a_value['up']==1) {
$list['up'][] = $a_value;
} elseif ($a_value['dateline']>=$_SGLOBAL['today']) {
$list['today'][] = $a_value;
} elseif ($a_value['dateline']>=$_SGLOBAL['today']-3600*24) {
$list['yesterday'][] = $a_value;
} else {
$theday = sgmdate('Y-m-d', $a_value['dateline']);
$list[$theday][] = $a_value;
}
目的:将要置顶的动态存入$list['up'][]数组中。
3、修改template/default/space_feed.htm:
找到(约80行):
<!--{if $day=='yesterday'}--><h4 class="feedtime">昨天</h4><!--{elseif $day!='today'}--><h4 class="feedtime">$day</h4><!--{/if}-->
修改为:
<!--{if $day=='yesterday'}--><h4 class="feedtime">昨天</h4><!--{elseif $day=='up'}--><h4 class="feedtime"><font color="red">置顶</font></h4><!--{elseif $day=='today'}--><h4 class="feedtime">今日</h4><!--{elseif $day!='today'}--><h4 class="feedtime">$day</h4>
<!--{/if}-->
前台修改完毕。现在开始修改后台,以批量管理及取消置顶。
修改admin/tpl/feed.htm
约66行<tr><td width="25"><input type="checkbox" name="ids[]" value="$value[feedid]"></td><td>后加入:
<!--{if $value['up']}-->【置顶事件】<!--{/if}-->
约76行<input type="submit" name="deletesubmit" value="批量删除" onclick="return confirm('本操作不可恢复,确认删除?');" class="submit">
后加入
<input type="submit" name="upsubmit" value="置顶" class="submit">
<input type="submit" name="delupsubmit" value="取消置顶" class="submit">
4、修改文件admin/admincp_feed.php,找到$mpurl = 'admincp.php?ac=feed';(约26行)前加入
if(submitcheck('upsubmit')) { //进行置顶操作
$ids=$_POST['ids'];
$sql='update '.$_SC['tablepre'].'feed set up=1 where 1>2 ';
foreach ($ids as $id){
$sql.=' or feedid='.$id;
}
$query = $_SGLOBAL['db']->query($sql);
cpmessage('置顶成功', $_POST['mpurl']);
}
if(submitcheck('delupsubmit')) { //取消置顶操作
$ids=$_POST['ids'];
$sql='update '.$_SC['tablepre'].'feed set up=0 where 1>2 ';
foreach ($ids as $id){
$sql.=' or feedid='.$id;
}
$query = $_SGLOBAL['db']->query($sql);
cpmessage('取消置顶成功', $_POST['mpurl']);
}
约39行找到 $orders = getorders(array('dateline'), 'feedid DESC'); 修改为:
$orders = getorders(array('dateline'), 'up desc,feedid DESC'); //添加了up排序。
56行: $selectsql = 'feedid';修改为 $selectsql = 'feedid,up';
注:56行如果你后台每页显示事件条数小于100可以不修改,如果大于100就需要修改,否则看不到置顶的事件。不方便管理。
更新缓存,在后台------批量管理-----事件中 对事件进行置顶操作,看看首页是不是跟我的一样哦!
首页效果:
后台效果:
|