时政头条模块说明
版本:v1.0(2026-09-28 新增) 遵循《页面模块创建规范》:无 emoji 图标、封面仅图片、CSRF 全覆盖、输出全转义、SQL 全参数绑定、正文白名单净化。
一、功能概览
| 能力 | 说明 |
|---|---|
| 频道首页 | news.php:头条焦点区(大图头条 + 要闻速览侧栏)、栏目导航条、文章列表(标题/导语/封面/来源/时间/浏览数)、最新最热排序、标题导语搜索、分页 |
| 文章详情 | news-detail.php?id=N:面包屑、标题、元信息(来源/栏目/时间/浏览)、导语框(左紫边引用样式)、封面大图、正文、上一篇/下一篇、同栏目相关推荐 |
| 头条机制 | is_headline 标记;频道焦点区与首页栏目优先展示头条,头条不足时自动用最新文章补足 |
| 后台管理 | admin/news.php 双 Tab:文章管理(筛选/搜索/分页/发布/转草稿/删除/头条标记/定时发布时间)+ 栏目管理(含文章数统计、占用保护) |
| 入口 | 前台导航「时政」(第 2 位)、首页栏目「时政头条」(置顶第 1 位)、后台侧边栏「内容管理 → 时政头条管理」 |
| 发布模式 | 新闻内容由后台编辑发布(无前台投稿),status:0=草稿(前台不可见,仅管理员可打开详情)1=已发布 |
二、文件清单
| 文件 | 职责 |
|---|---|
news.php | 前台频道首页(cat/q/sort/page 参数) |
news-detail.php | 文章详情页(浏览计数、草稿仅管理员可见) |
admin/news.php | 后台文章 + 栏目管理(写操作全部 CSRF) |
includes/fn-news.php | 模块函数库(经 includes/auth.php 统一加载,与 fn-encyclopedia 同因:functions.php 混合换行受编辑保护) |
assets/css/news.css | 模块样式(文件头含全站统一 Emoji 禁用规则块) |
index.php | 首页 news 栏目分支(头条焦点区块) |
admin/homepage-sections.php | 栏目类型注册 'news' => '时政头条' |
database.sql | 两张表 DDL + 默认栏目种子(全新安装自动可用) |
三、数据库设计
news(文章)
title标题(≤200 字);summary导语(纯文本 ≤500 字,strip_tags 后入库)content正文 HTML(入库前经newsSanitize()白名单净化)cover封面(仅图片 URL 或 uploads/ 路径,isValidNewsCover()校验)source来源媒体;author_id发布人;published_at发布时间(可后台指定,支持补发历史时间)is_headline头条焦点;status0=草稿 1=已发布;view_count浏览计数
news_categories(栏目)
name唯一;默认种子:时政 / 国际 / 财经 / 社会 / 科技 / 评论
四、安全与内容规范
- 存储型 XSS 防护:正文入库前经
newsSanitize()(复用百科模块encyclopediaSanitize()同一套 DOM 白名单):允许常规排版标签;a仅留 href(http/https/站内相对路径 + rel="nofollow");img仅留 src(http(s) 或 uploads/、assets/)+alt;script/style/iframe/form 等连内容整体删除;未知标签解包留文本。 - 权限:后台页 requireAdmin;草稿详情仅管理员可见(普通访问 404);快捷操作(发布/转草稿/删除)均带 CSRF token。
- 封面上传:≤2MB,MIME+扩展名双校验,GD 等比缩放最长边 800px,存
uploads/news/Y/m/。 - 无 emoji:模块全部界面零 emoji,头条徽标为文字样式(
.news-headline-badge)。
五、运营约定
- 头条建议保持 2–5 条:第 1 条进大图焦点位(配 16:9 以上横版封面效果最佳),其余进「要闻速览」。
- 示例数据:安装时预置 6 个栏目与 5 篇示例文章(来源标注"本站综合"),上线前请在后台替换为真实内容或删除。
- 转载文章请在
source字段注明来源媒体,正文首段注明出处,遵守版权规范。