## DevFolio For Typecho

DevFolio

专为独立开发者、技术博主、开源作者打造的 Typecho 极简响应式主题。

Content-First · Minimalist · Extensible

Version Typecho License Author


✨ 特性

🎨 视觉设计

特性说明
暗黑模式支持浅色 / 深色 / 跟随系统三种模式,localStorage 持久化偏好
响应式布局移动端 / 平板 / 桌面三端适配,断点 640px / 1024px / 1280px
毛玻璃导航sticky 定位 + backdrop-filter: blur(12px) 毛玻璃效果
设计令牌CSS 自定义属性驱动的色彩体系,后台可配置主色、内容宽度、圆角
代码高亮集成 highlight.js 11.9,支持 4 种主题(Default / GitHub Dark / Atom One Dark / Monokai)
Mac 风格代码块红黄绿三色圆点标题栏 + 语言标签 + 文件名 + 复制按钮 + 行高亮

📝 内容增强

特性说明
卡片式首页文章以卡片网格展示,自动提取正文首张图片为缩略图
阅读时间基于中文 500 字/分钟 + 代码行加权计算的阅读时间估算
字数统计精确的中英文混合字数统计,文章列表中展示
内容过时警告修改时间超过 1 年的文章自动显示黄色警告横幅
自动 TOC 目录根据 h2/h3/h4 标题自动生成桌面端左侧悬浮目录,IntersectionObserver 滚动高亮
移动端 TOC底部浮动目录按钮 + 右侧滑出面板
文章版权声明底部自定义版权信息,支持 {title} {author} {url} {year} {date} 变量替换
图片灯箱点击文章内图片全屏预览,ESC 或点击背景关闭

🔧 交互体验

特性说明
汉堡菜单移动端导航菜单切换,aria-expanded 无障碍支持
图片懒加载原生 loading="lazy" + IntersectionObserver 降级方案
搜索快捷键Ctrl+K / Cmd+K 快速聚焦搜索框
外链安全跳转外部链接弹窗确认,支持域名白名单
灯箱无阻塞pointer-events: none 确保未激活时不影响页面点击

🔒 安全与合规

特性说明
ICP 备案页脚显示 ICP 备案号,后台可配置
公安备案页脚显示公安备案号 + 图标,后台可配置
附件下载确认独立跳转页 go.php,倒计时 5 秒,防止恶意下载直链
输出安全Typecho 内置转义机制自动处理所有用户输入

📊 统计与评论

特性说明
建站时间页脚展示「已运行 X 天」,后台设置站点成立日期
累计访客sessionStorage 去重计数,异步 fetch 递增
三种评论系统Typecho 原生 / Twikoo / Waline 一键切换
RSS / JSON Feed页脚 RSS 和 JSON Feed 订阅链接

🛠 可扩展性

特性说明
自定义 CSS后台文本框注入覆盖样式,无需修改源码
统计代码GA4 / 百度统计代码注入
Logo + Favicon后台设置站点 Logo 和 Favicon URL
GitHub 链接导航栏 GitHub 图标按钮
自定义字段cover_image / live_url / repo_url / tech_stack
作品展示模板独立页面模板,网格卡片展示项目
智能网址识别编辑器粘贴纯 URL 自动识别为链接标题

🖼 效果预览

首页卡片布局

┌─────────────────────────────────────────────────┐
│ ┌──────────┐ ┌────────────────────────────────┐ │
│ │          │ │ 📅 2024-01-15 · ⏱ 5 分钟 · 1200 字│ │
│ │  缩略图   │ │                                │ │
│ │          │ │  文章标题                         │ │
│ │          │ │                                │ │
│ └──────────┘ │  摘要文本 摘要文本 摘要文本...        │ │
│              │  → 阅读全文                       │ │
│              └────────────────────────────────┘ │
└─────────────────────────────────────────────────┘

文章详情页

┌──────┐ ┌─────────────────────────────┐
│ 文章  │ │                             │
│ 目录  │ │  文章标题                     │
│  ∇    │ │  📅 日期 · ⏱ 阅读时间 · 字数   │
│      │ │                             │
│      │ │  正文内容...                   │
│      │ │                             │
│      │ │  ┌────────────────────┐     │
│      │ │  │ 版权声明            │     │
│      │ │  └────────────────────┘     │
│      │ │  ← 上一篇 | 下一篇 →         │
│      │ │  💬 评论区域                │
└──────┘ └─────────────────────────────┘

🚀 快速开始

环境要求

依赖最低版本
Typecho≥ 1.3.0
PHP≥ 7.4

安装步骤

  1. 下载主题压缩包,解压后得到 DevFolio 文件夹
  2. DevFolio 文件夹上传到 Typecho 的 /usr/themes/ 目录
  3. go.php 上传到 Typecho 根目录(附件下载确认功能需要)
  4. 登录 Typecho 后台,进入 控制台 → 外观
  5. 找到 DevFolio 主题,点击 启用
  6. 进入 控制台 → 外观 → 设置外观,配置主题选项

⚙ 主题设置

启用主题后,在「设置外观」页面可配置以下选项:

🎨 外观

设置项类型说明默认值
站点 Logo URL文本留空显示站点标题文字
Favicon URL文本浏览器标签页图标
GitHub 主页链接URL导航栏 GitHub 图标
外观风格选择自动 / 浅色 / 深色自动

💬 评论

设置项类型说明默认值
评论系统选择Typecho 原生 / Twikoo / Waline原生
Twikoo EnvId文本选择 Twikoo 时必填
Waline 服务端地址URL选择 Waline 时必填

📋 备案

设置项类型说明默认值
ICP 备案号文本例:京ICP备12345678号
公安备案号文本例:京公网安备 12345678901234号
公安备案图标文本图标 URL,留空使用默认

📊 统计

设置项类型说明默认值
站点建立时间文本格式 YYYY-MM-DD

📝 内容

设置项类型说明默认值
文章底部版权信息文本支持变量替换
代码高亮选择启用 highlight.js关闭
代码高亮主题选择Default / GitHub Dark / Atom One Dark / MonokaiDefault
智能网址识别选择粘贴纯 URL 自动识别标题关闭

🔒 安全

设置项类型说明默认值
外链跳转提示选择弹窗确认外部链接关闭
外链白名单多行文本每行一个域名
附件下载确认选择下载确认页 go.php关闭

🔧 自定义

设置项类型说明默认值
自定义 CSS多行文本无需修改源码
统计代码多行文本GA4 / 百度统计

🏷 版权信息变量

在「文章底部版权信息」中,支持以下变量:

变量替换为示例
{title}文章标题DevFolio 主题发布
{author}文章作者Wzu
{url}文章链接https://blog.wzu.me/xxx.html
{year}发布年份2024
{date}发布日期2024-01-15

示例配置:

本文「{title}」由 {author} 原创发布,采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
原文链接:{url}

📂 自定义字段

DevFolio 提供 4 个文章级自定义字段:

字段名用途示例值
cover_image作品封面图 URLhttps://img.example.com/cover.png
live_url在线演示地址https://demo.example.com
repo_url源码仓库地址https://github.com/user/repo
tech_stack技术栈标签Vue,Typecho,Tailwind CSS

在文章编辑页面底部的「自定义字段」区域添加即可。

提示:首页卡片缩略图自动从正文第一张图片提取,无需手动设置 cover_image

📄 页面模板

作品展示 (page-showcase.php)

创建独立页面时选择模板「作品展示」,将以网格卡片布局展示所有已发布文章及其自定义字段:

┌──────────┐ ┌──────────┐ ┌──────────┐
│  封面图   │ │  封面图   │ │  封面图   │
│  Hover   │ │  Hover   │ │  Hover   │
│  [演示]   │ │  [演示]   │ │  [演示]   │
│  [源码]   │ │  [源码]   │ │  [源码]   │
│───────   │ │───────   │ │───────   │
│ 项目名称  │ │ 项目名称  │ │ 项目名称  │
│ Vue PHP  │ │ React Go │ │ Flutter  │
└──────────┘ └──────────┘ └──────────┘

每张卡片 hover 时显示「在线演示」和「查看源码」按钮(需设置对应自定义字段)。


📁 文件结构

DevFolio/
├── 🖼 screenshot.png                  # 主题缩略图(需自行提供)
├── 📄 style.css                       # 主题元信息注释(Theme Name/Author/Version/Requires)
├── 📄 functions.php                   # 主题设置面板 + 自定义字段注册 + 工具函数
│
├── 📄 index.php                       # 首页 / 归档列表模板
├── 📄 post.php                        # 文章详情页模板
├── 📄 page.php                        # 普通页面模板
├── 📄 page-showcase.php              # 作品展示自定义页面模板
├── 📄 search.php                      # 搜索页模板
├── 📄 404.php                         # 404 错误页模板
│
├── 📂 parts/
│   ├── header.php                     # 页头(SEO Meta + 导航栏 + CSS加载)
│   ├── footer.php                     # 页脚(备案 + 统计 + JS加载)
│   └── comments.php                   # 评论区(原生评论系统)
│
├── 📂 components/
│   ├── post-card.php                  # 首页文章卡片(缩略图 + 摘要)
│   ├── post-meta.php                  # 文章元信息(日期/阅读时间/字数/分类)
│   ├── pagination.php                 # 分页导航
│   ├── toc.php                        # 文章目录容器
│   └── showcase-card.php             # 作品展示卡片
│
└── 📂 assets/
    ├── 📂 css/
    │   └── main.css                   # 主样式表
    └── 📂 js/
        └── theme.js                   # 主题脚本(暗黑模式/TOC/代码增强/灯箱/搜索/懒加载/高亮/外链/访客/URL识别)

❓ 常见问题


启用主题后页面 500 错误

检查以下几点:

  1. 确认 Typecho 版本 ≥ 1.3.0,主题使用经典模板 API($this->need()$this->options 等)
  2. 确认 PHP 版本 ≥ 7.4
  3. 检查 functions.php 中是否有 PHP 语法错误
  4. 查看 Typecho 的 var/Typecho/ 目录是否完整


启用主题后点击无反应 / 鼠标变放大镜

灯箱遮罩层 .lightbox-overlay 使用 position: fixed; inset: 0 覆盖整个页面。确保 CSS 中包含 pointer-events: none(默认状态)和 pointer-events: auto(激活状态),否则透明遮罩会拦截所有点击。


首页显示 Fatal error: Cannot redeclare function

devfolio_extract_thumb() 函数被多次声明。确保 components/post-card.php 中使用 function_exists() 守卫:

if (!function_exists('devfolio_extract_thumb')) {
    function devfolio_extract_thumb($content) { ... }
}


CSS/JS 资源 404 或路径错误

主题使用 $this->options->themeUrl 生成资源路径,依赖于 Typecho 后台设置的 站点地址。如果路径不正确:

  1. 进入 控制台 → 设置 → 基本,检查「站点地址」是否正确
  2. 确认主题文件夹名称为 DevFolio(区分大小写)


如何启用代码高亮

  1. 后台 设置外观 → 代码高亮 → 选择「启用」
  2. 选择喜欢的主题(Default / GitHub Dark / Atom One Dark / Monokai)
  3. 代码高亮由 CDN 加载 highlight.js 11.9,需要网络连接


外链跳转提示如何配置

  1. 后台 设置外观 → 外链跳转提示 → 选择「启用」
  2. 在「外链白名单」中填写不需要提示的域名,每行一个,例如:

    blog.wzu.me
    github.com
    typecho.org


导航菜单如何自定义

在 Typecho 后台 管理 → 独立页面 中创建的页面会自动出现在导航栏中。页面顺序由创建顺序决定。如需自定义排序或添加外部链接,可创建独立页面并设置「顺序」字段。


📝 更新日志

v1.0.0 (2024-06)

  • 🎉 首个正式版本发布
  • ✨ 支持 Typecho ≥ 1.3.0(经典模板 API)
  • ✨ 卡片式首页布局,自动提取缩略图
  • ✨ 左侧悬浮 TOC 文章目录
  • ✨ 暗黑模式支持(浅色/深色/跟随系统)
  • ✨ Mac 风格代码块增强(标题栏 + 复制 + 行高亮)
  • ✨ highlight.js 代码语法高亮
  • ✨ 图片灯箱(点击放大)
  • ✨ 外链安全跳转提示 + 白名单
  • ✨ 附件下载确认页 go.php
  • ✨ 文章底部版权信息(变量替换)
  • ✨ 页脚备案信息(ICP + 公安)
  • ✨ 建站时间 + 累计访客统计
  • ✨ 三种评论系统支持(原生/Twikoo/Waline)
  • ✨ 作品展示自定义页面模板
  • ✨ 智能网址识别
  • ✨ Logo + Favicon 自定义
  • ✨ 响应式设计(移动端/平板/桌面)
  • ✨ SEO 优化(OGP / Twitter Card / Schema.org)
  • ✨ 阅读时间 + 字数统计
  • ✨ 内容过时警告
  • ✨ 搜索快捷键 Ctrl+K
  • ✨ 后台 themeConfig() 配置面板
  • window.DevFolio JS 配置桥接

📄 许可

本主题基于 GPL 2.0 协议发布,可自由使用、修改和分发。


🔗 链接

下载链接

本文设置了评论可见,请在下方评论后刷新页面查看正文。去评论
版权声明
本文「DevFolio主题-专为独立开发者、技术博主、开源作者打造的 Typecho 极简响应式主题。」由 王大锤 原创发布,采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。 原文链接:https://blog.wzu.me/zhuti/DevFolio.html
分享到:

发表评论