hi,all
我最近在做一个论坛的推荐功能的时候,不知道该怎么实现会比较好。
-
需求
- 管理员可以在后台编辑帖子,帖子可以被推送到首页的推荐位,版块本身的推荐位,还有全局的推荐位(就是每个版块的推荐位都要出现这个帖子)。
- 被推荐的帖子有多种属性类别,比如置顶帖、精华帖等等。
初步的实现方案
我用了三张表(common_top_recommend),让管理员可以在后台进行编辑。字段如下:
<br>-- common_top_recommend表 id -- 自增id post_id -- 帖子id top_recommned_position_id --发布的位置id,关联另外一张位置表,比如首页、版块、全局等 type_id --类别id,关联另外一张类型表,比如是精华、置顶、公告等 category_id --版块id --common_top_recommend_position表 id -- 自增id name -- 显示的名字 codename -- 用来匹配的名字,比如index,category,global这样 --common_top_recommend_type表 id -- 自增id name -- 显示的名字 codename -- 用来匹配的名字,比如top/digest/announce等
比如,查找出某一个版块的置顶帖:
select r.post_id from common_top_recommend as r left join common_top_recommend_position as p on r.top_recommned_position_id=p.id where r.category_id=1 or p.codename="global" ;
这样的话,就可以查找出当前版块的置顶贴了。
不过我觉得这样的实现可能有些问题,我参考了下discuz和phpwind的代码,好像都是通过一个display_order字段来完成位置的操作的,但具体实现细节还不是很清楚。
不知道有没更好更轻量的方案呢?
回复内容:
hi,all
我最近在做一个论坛的推荐功能的时候,不知道该怎么实现会比较好。
-
需求
- 管理员可以在后台编辑帖子,帖子可以被推送到首页的推荐位,版块本身的推荐位,还有全局的推荐位(就是每个版块的推荐位都要出现这个帖子)。
- 被推荐的帖子有多种属性类别,比如置顶帖、精华帖等等。
初步的实现方案
我用了三张表(common_top_recommend),让管理员可以在后台进行编辑。字段如下:
<br>-- common_top_recommend表 id -- 自增id post_id -- 帖子id top_recommned_position_id --发布的位置id,关联另外一张位置表,比如首页、版块、全局等 type_id --类别id,关联另外一张类型表,比如是精华、置顶、公告等 category_id --版块id --common_top_recommend_position表 id -- 自增id name -- 显示的名字 codename -- 用来匹配的名字,比如index,category,global这样 --common_top_recommend_type表 id -- 自增id name -- 显示的名字 codename -- 用来匹配的名字,比如top/digest/announce等
比如,查找出某一个版块的置顶帖:
select r.post_id from common_top_recommend as r left join common_top_recommend_position as p on r.top_recommned_position_id=p.id where r.category_id=1 or p.codename="global" ;
这样的话,就可以查找出当前版块的置顶贴了。
不过我觉得这样的实现可能有些问题,我参考了下discuz和phpwind的代码,好像都是通过一个display_order字段来完成位置的操作的,但具体实现细节还不是很清楚。
不知道有没更好更轻量的方案呢?

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Dreamweaver CS6
视觉化网页开发工具

WebStorm Mac版
好用的JavaScript开发工具