SAE版给首页添加分页功能

By 沉默小子g at 2013-04-08 12:15:42 • 944次点击

@ego008 一直不把SAE版升级到1.04,导致首页没有分页,用起来比较蛋疼,今天看了一下1.04的代码,发现要要移植到SAE版上还是比较简单的。我说一下方法吧
1.04在.htaccess里添加了一句
RewriteRule ^page/([0-9]+)$ indexpage.php?page=$1 [L]
所以我们得修改网站根目录的config.yaml文件,添加一行
- rewrite: if( path ~ "^page/([0-9]+)$" ) goto "indexpage.php?page=$1"
然后把https://github.com/cmxz/youbbs/blob/master/indexpage.php 里面的代码复制粘贴成php文件【注意要保存成utf-8编码】,然后上传到网站根目录。
再把https://github.com/cmxz/youbbs/blob/master/templates/default/indexpage.phphttps://github.com/cmxz/youbbs/blob/master/templates/default/ios_indexpage.php 这两个保存成php文件上传到论坛/templates/default/目录下(这两个文件待会儿还要改一些内容)
然后打开/templates/default/home.php文件,在第49行(是一个空行)处粘贴下面代码

if(count($articledb) == $options['home_shownum']){

echo '<div class="pagination">';

echo '<a href="/page/2" class="float-right">下一页 &raquo;</a>';

echo '<div class="c"></div>

</div>';

}

接着再打开/templates/default/ios_home.php,在46行(空行)处粘贴下面代码
if(count($articledb) == $options['home_shownum']){

echo '<div class="pagination">';

echo '<a href="/page/2" class="float-right">下一页 &raquo;</a>';

echo '<div class="c"></div>

</div>';

}
然后你访问论坛就应该可以在首页下面看到“下一页”链接了,不过你会发现点击下一页后显示的页面头像无法显示,这是才是SAE版和VPS版的区别
你需要把刚才上传的/templates/default/ios_indexpage.php文件打开,把21行的
<img src="/avatar/mini/',$article['uavatar'],'.png" alt="',$article['author'],'" />
替换成
<img src="',$options['base_avatar_url'],'/',$article['uavatar'],'.jpg!mini" alt="',$article['author'],'" />
再打开/templates/default/indexpage.php,把21-23行的
echo '<img src="/avatar/normal/',$article['uavatar'],'.png" alt="',$article['author'],'" />';
}else{

echo '<img src="/static/grey.gif" data-original="/avatar/normal/',$article['uavatar'],'.png" alt="',$article['author'],'" />';
替换成
echo '<img src="',$options['base_avatar_url'],'/',$article['uavatar'],'.jpg!normal" alt="',$article['author'],'" />';
}else{

echo '<img src="/static/grey.gif" data-original="',$options['base_avatar_url'],'/',$article['uavatar'],'.jpg!normal" alt="',$article['author']

至此,你就给youbbs1.0.3添加上了分页功能`(*∩_∩*)′

sae, 首页, 功能


另外, @ego008 求教那个文件是判断用户浏览器的?

沉默小子g at 2013-04-08 12:18:25
1

好吧,我找到了,在根目录下的common.php文件里有一句
$is_mobie = preg_match('/(iPod|iPhone|Android|SymbianOS|Windows Phone OS|iOS|WAP|ucweb|Opera Mini|BlackBerry|webOS|UCWEB|Blazer|PSP)/i', $user_agent);
只要给这里添加就好了

沉默小子g at 2013-04-08 13:37:35
2

@沉默小子g common.php
$user_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
if($user_agent){

$is_spider = preg_match('/(bot|crawl|spider|slurp|sohu-search|lycos|robozilla|google)/i', $user_agent);

$is_mobie = preg_match('/(iPod|iPhone|Android|Opera Mini|BlackBerry|webOS|UCWEB|Blazer|PSP)/i', $user_agent);

jat001 at 2013-04-08 13:40:08
3

我发现即使输入的文字和图片url在一行(之间没有换行),但显示出来后图片和文字之间总是有换行的。我看了common.php文件里的set_content函数是格式化内容的,其中
$text = preg_replace($img_re, '<img src="'.$options['base_url'].'/static/grey2.gif" data-original="\1" alt=""

/>', $text);
函数是用来替换图片的
而且使用了lazy load插件来延迟加载图片,但我还是不知道该修改什么才能使得图文之间不自动换行,只有当用户输入回车后才换行 @ego008

沉默小子g at 2013-04-08 16:35:23
4

@沉默小子g css img display:block

ego008 at 2013-04-08 17:57:38
5

@ego008 你是说修改/static/default/style.css文件,把img { border: none; }修改吗?
我改为img { display:block }
依旧不行,见下图

沉默小子g at 2013-04-08 18:15:01
6

另外,我对css一窍不通,希望你能说明白一点儿,谢谢了

沉默小子g at 2013-04-08 18:15:39
7

同行 同行测试:在chrome 上修改css

ego008 at 2013-04-08 18:24:13
8

同行测试:在chrome

上修改css

沉默小子g at 2013-04-08 18:25:57
9

肿么不显示图片?

沉默小子g at 2013-04-08 18:26:22
10

%20%20%3Ca%20href= 同行测试

沉默小子g at 2013-04-08 18:26:49
11

依旧不在同一行

你看看

沉默小子g at 2013-04-08 18:27:14
12

.topic-content img
.commont-content img

ego008 at 2013-04-08 18:27:14
13

http://ww1.sinaimg.cn/large/a74eed94jw1e3i90fq4dxg.gif

http://ww1.sinaimg.cn/large/a74eed94jw1e3i90fq4dxg.gif" alt="" />

沉默小子g at 2013-04-08 18:27:43
14

而且,多个图片时会匹配出错

沉默小子g at 2013-04-08 18:28:15
15

.commont-content

img的本来就是display:block

沉默小子g at 2013-04-08 18:31:37
16

@ego008 把那个改成display:inline 可以显示到同一行了,不过对多个图片的匹配依旧有问题

沉默小子g at 2013-04-08 18:37:17
17

默认是display:block

删除这个属性。

刚才发现一个问题,chrome 自动给img 标签添加一个display:block

的style

ego008 at 2013-04-08 18:37:22
18

多个相同的图片是有问题,我看看正则能不能修好这个bug

ego008 at 2013-04-08 18:38:12
19

@ego008 连续发多个图片链接,之间用多个空格连接甚至用中文连接,都会有问题

沉默小子g at 2013-04-08 18:40:04
20

14楼应该是全角空格问题

英文有空格分隔,中文没有。

ego008 at 2013-04-08 19:41:04
21
沉默小子g at 2013-04-08 20:03:27
22
沉默小子g at 2013-04-08 20:04:10
23

http://ww1.sinaimg.cn/large/a74eed94jw1e3i90fq4dxg.gif http://ww1.sinaimg.cn/large/a74eed94jw1e3i90fq4dxg.gif" alt="" />

沉默小子g at 2013-04-08 20:04:34
24

@ego008 无论是全角还是半角,都一样

沉默小子g at 2013-04-08 20:05:41
25

本地测试正常

ego008 at 2013-04-08 20:56:27
26

@ego008 问一个关于php函数的问题吧
我想在论坛添加几个简单的表情功能,思路是在set_content函数里使用preg_replace函数替换特定字符为图片,代码如下(我用的是at+表情名,而且禁止注册用户里有表情名,且这个处理函数是在at用户的前面以确保$text里面的at字符在匹配用户前都变成了图片链接)
$expression =array("/ @呲牙 /","/ @鄙视 /","/ @折磨 /");

$reexpression =array("呲牙","鄙视","折磨");

ksort($expression);

ksort($reexpression);

$text=preg_replace($expression,'<img src="'.$options['base_url'].'/static/expression/'.$reexpression.'.gif" /> ',$text);
以上代码在实际测试时替换成的图片url都是/static/expression/Array.gif
但是当我不用数组,只用字符串时却可以正常显示图片,能否帮忙看看是那块儿的问题,感激不尽

沉默小子g at 2013-04-08 22:22:04
27

即当我添加
$expression

="/

@呲牙 /";
$reexpression

="呲牙";
$text=preg_replace($expression,'<img

src="'.$options['base_url'].'/static/expression/'.$reexpression.'.gif"

/>

',$text);
时输入at呲牙,可以正常显示图片,哪怕连续输入多个表情也可以,但一改成数组,就出问题了

沉默小子g at 2013-04-08 22:23:48
28

@沉默小子g 提供一个参考函数,另开帖方便搜索 http://youbbs.sinaapp.com/t/957

ego008 at 2013-04-09 08:38:57
29
登录 后发表评论