Shang Gao
Milestones
📋 ← Back to Home · 返回首页
Shang Gao www.shanggao.net
© 2000-2026 Shang Gao. All rights reserved. 未经书面许可,不得用于商业用途。
Read 14

Professional Website Design 2

Website Refinement & Content Management System v1.0.0

Shang Gao 2026-09-17

🏗️ What Was Done 完成清单

📐 Layout & Typography · 布局与排版

  • ✅ Header 高度统一(桌面 76px、手机 64px)
  • ✅ 手机字号缩放(80% → 85%)
  • ✅ 内容页页首三栏(桌面:Logo / 分类 / Back;手机:Logo / 📋 + ←)
  • ✅ 主页内容区块动态生成(最新 n 条,n 可通过分类配置)
  • ✅ 列表页卡片布局(标题 + 作者 + 日期)

🖨️ Print & PDF · 打印与 PDF

  • ✅ 打印双列布局
  • ✅ 每页页眉页脚(用户关不掉)
  • ✅ 分页优化(第 1 页有内容)
  • ✅ Android 兼容方案(预生成 PDF)

🔐 Security · 安全

  • ✅ 内容可见性(public / members / private / draft)
  • ✅ 私有文章 404 保护
  • ✅ 敏感文件保护(ALLOW_*_LOAD 常量)
  • ✅ assets/ 目录防浏览

⚙️ Engineering · 工程

  • ✅ Shared functions library(load_posts / format_date)
  • ✅ 站点信息模块(site.php)
  • ✅ 邮件脚本从配置文件读取配置
  • ✅ 代码去重

📖 Documentation · 文档

  • ✅ 设计规范文档(29 节,网页版)
  • ✅ 内容元数据字段规范
  • ✅ 安全规范
  • ✅ 打印规范

📚 What Was Learned 学习收获

🎨 CSS & Layout · CSS 与布局

  • ✅ position: fixed vs sticky
  • ✅ Flex align-items: flex-start
  • ✅ 变量作用域与覆盖顺序
  • ✅ @media 后写覆盖先写

🖨️ Print CSS · 打印 CSS

  • ✅ @page 与 @media print
  • ✅ page-break-inside: auto vs avoid
  • ✅ thead / tfoot 每页重复
  • ✅ position: fixed 打印不可靠

🐘 PHP

  • ✅ define + require 常量保护
  • ✅ glob() 失败处理
  • ✅ try-catch 处理 require
  • ✅ Session 与安全

🏛️ Architecture · 架构

  • ✅ 文件系统即数据库(flat-file CMS)
  • ✅ 元数据与视图分离
  • ✅ 内容加载函数复用
  • ✅ 内容页规范可复用

📱 Cross-Device · 跨设备

  • ✅ Android 打印限制
  • ✅ 预生成 PDF 方案
  • ✅ 手机页首特殊处理

📖 Documentation · 文档

  • ✅ 规范文档化
  • ✅ 中英双语
  • ✅ 可打印规范

🔄 Before / After 之前 / 现在

❌ Before · 之前 ✅ After · 现在
❌ 手机字号偏小 ✅ 85% 缩放,视觉舒适
❌ Header 高度不统一 ✅ 桌面 76px / 手机 64px
❌ 主页内容区块硬编码 ✅ 动态读取最新 n 条
❌ 打印单列、第 1 页空白 ✅ 双列、每页有内容
❌ Android 无法下载 PDF ✅ 预生成 PDF 方案
❌ 私有文章可猜 URL ✅ 服务端 404 保护
❌ 元数据文件可直接访问 ✅ 常量保护
❌ 邮件脚本硬编码 ✅ 从配置文件读
❌ 代码重复 ✅ 内容加载函数统一
❌ 无设计规范 ✅ 29 节完整规范

🧩 Issues & Solutions 问题与解决

问题 · Issue 原因 · Cause 解决方案 · Solution
手机字号偏小 缩放 80% 改成 85%
Header 高度不一致 变量用 rem 随缩放 用 px + 手机媒体查询
点击跳转时 Header 跳动 两页高度计算不同 统一 76px / 64px
打印第 1 页空白 page-break-inside: avoid 改成 auto
打印单列 浏览器忽略 grid @media print 强制 grid
页眉页脚用户可关 @page 的 margin box <table> + thead/tfoot
Android 不能下载 PDF 系统打印受限 预生成 PDF + 静态链接
私有文章可猜 URL 只在前端过滤 服务端 404 检查
元数据文件可访问 无保护 ALLOW_META_LOAD 常量
代码重复 每个文件独立实现 抽公共函数库
变量覆盖顺序错 @media 在前、:root 在后 调整顺序
© 2000-2026 Shang Gao. All rights reserved. 未经书面许可,不得用于商业用途。

© 2000-2026 Shang Gao. All rights reserved.