海洋CMS如何设置豆瓣评分/评分显示?
结论:海洋CMS 显示豆瓣评分,本质上只做三件事——把评分存进影片表的评分字段(多数版本为 vod_score)、在模板里调用这个字段、再配一段星级样式把它渲染出来;后台没有现成的「豆瓣评分开关」,评分也不由海洋CMS 自己算,而是靠采集或手动入库。
豆瓣评分在海洋CMS里存在哪个字段?
结论:评分是影片表 vod(部分版本为 sea_data)里的数值字段,不是独立模块。先确认字段名,再谈显示。
用 phpMyAdmin 或命令行打开数据库,执行:
DESC vod;
搜带 score 的列。常见有三个:vod_score(当前平均分,如 8.7)、vod_score_all(总分)、vod_score_num(打分人数)。如果你的库里只有 vod_score,那显示只看这一个值就够了。
手动测试一条数据:
UPDATE vod SET vod_score = '9.2' WHERE vod_id = 123;
刷新前台详情页,如果分数变了,说明字段找对了,后面只是模板问题;如果没变,说明你的模板根本没调用这个字段。
后台能不能直接改豆瓣评分?
结论:能不能改取决于你的版本,最新几版海洋CMS 的影片编辑页有「评分」输入框,老版本只能走数据库或采集。
先进后台 → 视频管理 → 编辑某部影片,找「评分」「推荐指数」一类的输入项。填 9.2,注意填数字不要带「分」字,否则前台可能输出成空白。保存后前台不显示,就是第三步的模板问题。
如果编辑页没有这个输入框,两条路:一是用上面的 SQL 批量刷,二是改采集规则,让评分跟着影片一起入库(见下一节)。
模板里怎么写才能显示出评分?
结论:在模板文件里调用评分字段,位置决定在哪显示——详情页改 detail 模板,列表页改 list 模板。
海洋CMS 的模板默认在 /templets/ 或模板目录下,结构是 模板名/detail.html、list.html。评分标签的写法各版本略有差异,最常见的两种:
{$vod_score}
[vod:score]
改之前先在模板里搜 score 或 评分,看现有写法照抄最稳。详情页通常放在影片名下方:
<span class="score">{$vod_score}</span>
列表页放在循环体内部,不要放到循环外面,否则只会重复显示第一条数据的分数。
采集时怎么自动抓豆瓣评分?
结论:豆瓣评分靠采集规则里的正则从豆瓣页面抓,海洋CMS 本身不提供豆瓣评分接口。
在后台「采集管理」→「自定义规则」中,把评分字段绑定到一条正则上。豆瓣影片页的评分通常在结构化数据里,类似:
"ratingValue": "8.7"
对应正则:
"ratingValue":\s*"([\d.]+)"
把这条规则映射到 vod_score 字段,采集时就会自动写入。注意两点:一是豆瓣页面会变结构,正则要定期检查;二是部分豆瓣页面评分由 JS 渲染,直接抓 HTML 抓不到,这种情况要么换数据源(如 TMDB、猫眼),要么用采集插件带的浏览器渲染模式。
评分显示为 0 或空白,通常是什么原因?
结论:九成是字段没值或模板调错变量,只有少数是样式被覆盖。
按顺序排查:
- 数据库里
vod_score是不是0或NULL——是的话先补数据。 - 模板里调用的是不是当前版本的正确标签——把
{$vod_score}换成{$vod_score|default='暂无评分'}之类试试是否能输出。 - 前台 HTML 源码里搜索分数值——源码里有、页面看不到,就是 CSS 把
.score的颜色设成了白色或被overflow:hidden裁掉。
想显示成五星图形怎么做?
结论:不存图片,用 CSS 宽度百分比映射分数,改分数时不用换图。
一个 10 分制转五星的简单做法:外层容器宽度 100px,内层亮色条宽度 = 分数 / 10 * 100%。模板里输出:
<div class="stars"><i style="width:{$vod_score}0%"></i></div>
9.2 会输出 92%。如果想让评分支持半分、精度到 0.5,把 vod_score 字段类型设为 DECIMAL(3,1),能存 9.5 这种值,FLOAT 容易出现 9.199999 的精度问题。
整体思路就一句话:数据进 vod_score,模板调 vod_score,样式映射百分比。三步里任何一步断了,前台都不会显示评分。
原文链接:https://www.gj0.com/thread-258.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。