# 论坛 bbs.tigtag.com (discuz)
######### 2015-6-1 修改楼层广告显示逻辑,变随机为全部
### 说明
对于帖子楼层内的广告位(这里以 “下方” 为例),如果该版块设置了多个广告,那么这些广告是随机在每个楼层显示,例如 A,B 广告,会分别出现在 1、2、3、4 楼
### 跟踪过程
1. 首先找到模板 `viewthread_node.htm` 中的 `<!--{ad/thread/a_pb/1/$postcount}-->` 这段代码与前台页面中广告位的 html DOM 有关
2. 找到对应的模板缓存文件中 `<?php echo adshow("thread/a_pb/1/$postcount");?>`,定位到函数名 `adshow`
3. 在 `function_core.php` 中找到函数 `function adshow`
4. 分析函数,发现主要的“随机”处理发生在 `@eval($evalcode[‘create‘]);`
5. 跟踪到 `source/class/adv/adv_thread.php` 文件,找到 `evalcode`函数,将里面的`create`一段,改成如下,主要是通过屏蔽 `array_rand` ,然后添加 `foreach` 循环 `adid` 数组来实现字符串组合
1 $query = DB::query("SELECT DISTINCT t.*$sqlfield 2 FROM `".DB::table(‘forum_thread‘)."` t 3 $sqlfrom WHERE {$maxwhere}t.readperm=‘0‘ 4 $sql 5 AND t.displayorder>=‘0‘ 6 ".$order_string." 7 LIMIT $startrow,$items;" 8 );
```php
//$adid = $adids[array_rand($adids)];
-
foreach($adids as $adid){ if($parameters[$adid][\‘position\‘]==3){ $_G[\‘thread\‘][\‘contentmr\‘]= $parameters[$adid][\‘width\‘]? $parameters[$adid][\‘width\‘].\‘px\‘ : \‘auto\‘; $extra = \‘style="margin-left:10px;width:\‘.$_G[\‘thread\‘][\‘contentmr\‘].\‘"\‘; }
$adcode .= $codes[$adid];
}
```
######### 2015-6-6 解决找回密码时提示参数错误的问题
### 说明
此为 discuz 官方 bug,一直未修复,需要改动两个文件
### 修改 source\module\member\member_getpasswd.php
第32行找到
`$uid = $_GET[‘uid‘];`
在下方添加一行
`$sign = $_GET[‘sign‘];`
### 修改 template\default\member\getpasswd.htm
找到第8行
`<form method="post" autocomplete="off" action="member.php?mod=getpasswd&uid=$uid&id=$hashid">`
修改为:
`<form method="post" autocomplete="off" action="member.php?mod=getpasswd&uid=$uid&id=$hashid&sign=$sign">`
######### 2015-7-30 市场部同事要求广告帖子区域强制排序
### 说明
广告帖子区域的排序之前是固定排序的,应市场部同事的要求,需要通过点击更新按钮(后台-->门户-->模块管理-->数据调用-->更新)自动按照属性(数据调用-->属性)中“指定主题”的顺序排序。
## 修改 source/class/block/forum/block_thread.php
#找到258行
$orderby = isset($parameter[‘orderby‘])?(in_array($parameter[‘orderby‘],array(‘lastpost‘,‘dateline‘,‘replies‘,‘views‘,‘heats‘,‘recommends‘))? $parameter[‘orderby‘]:‘lastpost‘):‘lastpost‘;
删除默认排序,即:
$orderby = isset($parameter[‘orderby‘])?(in_array($parameter[‘orderby‘],array(‘lastpost‘,‘dateline‘,‘replies‘,‘views‘,‘heats‘,‘recommends‘))? $parameter[‘orderby‘]:‘lastpost‘):‘‘;
#找到354行
插入一行代码:
$order_string =($orderby ==‘‘)?"ORDER BY find_in_set(t.tid,‘{$parameter[‘tids‘]}‘)":"ORDER BY t.$orderby DESC";
并将如下代码做相应的修改:
$query = DB::query("SELECT DISTINCT t.*$sqlfield
FROM `".DB::table(‘forum_thread‘)."` t
$sqlfrom WHERE {$maxwhere}t.readperm=‘0‘
$sql
AND t.displayorder>=‘0‘
ORDER BY t.$orderby DESC
LIMIT $startrow,$items;"
);
1 2 3 4 5 6 7 8 |
|
即:
$query = DB::query("SELECT DISTINCT t.*$sqlfield
FROM `".DB::table(‘forum_thread‘)."` t
$sqlfrom WHERE {$maxwhere}t.readperm=‘0‘
$sql
AND t.displayorder>=‘0‘
".$order_string."
LIMIT $startrow,$items;"
);
1 2 3 4 5 6 7 8 |
|
$query = DB::query("SELECT DISTINCT t.*$sqlfield
FROM `".DB::table(‘forum_thread‘)."` t
$sqlfrom WHERE {$maxwhere}t.readperm=‘0‘
$sql
AND t.displayorder>=‘0‘
".$order_string."
LIMIT $startrow,$items;"
);
1 2 3 4 5 6 7 8 |
|