aijun's blog - aijun
type: channel
link: https://aijun.org/author/1/
description: aijun
items: 仿烧饼博客风格的 Typecho 主题（USB for Typecho）
items: 二十载岁月流转，盼再入一次有你的梦
items: 回首 04‑05 年个人网站，与书画家李金山先生的笔墨际遇
items: 解决帝国 CMS7.5 升级到 8.0 后，使用图片模型的栏目新增编辑内容没法加载的问题
items: 重新设计 aijun 的个人形象 LOGO
items: Nginx服务器上如何配置规则，拦截AI爬虫、垃圾SEO蜘蛛采集器、拦截空UA
items: 江苏省美术与设计类高考志愿填报及录取规则详解
items: 帝国CMS列表的分页导航标签show.listpage样式优化
items: 帝国CMS文章内容页下载附件时恢复为原始名称
items: Typecho 博客主题 Facile 个性化修改日志

仿烧饼博客风格的 Typecho 主题（USB for Typecho）
type: item
date: 2026-09-03T09:50:00+08:00
description: aijun 仿烧饼博客 U.SB 风格的 Typecho 主题，Light / Dark 双配色主题简介USB for Typecho 是一款由 aijun 参照 U.SB Design 视觉风格制作的 Typecho 主题，主打简洁卡片式布局与细腻的明暗双主题。主题无 jQuery、无构建依赖、无独立后端，全部前端资源（JS / CSS / 字体 / 图片）本地内置，无任何站外资源请求，纯 Typecho 模板 + 原生 CSS/JS 实现，安装即用。基本信息项目说明主题名称USB当前版本1.0.1适用程序Typecho 1.3.0演示地址暂无主要场景技术博客、个人知识库、Markdown 长文、项目记录、经验分享主题模式浅色、深色、跟随系统，并记忆访客的手动选择前端依赖无 jQuery、无前端框架、无外部字体、无第三方 CDN开源协议主题代码采用 MIT License下载USB-for-Typecho-1.0.1.zip功能特性外观与主题Light / Dark 双配色，后台可设「跟随系统 / 浅色 / 深色」默认策略访客可手动切换主题，选择结果记忆在本地（localStorage），未手动选择时自动跟随系统深色模式下唯一强调色为金黄 #ffcc00，链接、导航、按钮整体和谐平滑主题切换过渡、滚动条、Tooltip 气泡等细节打磨导航栏 Logo 支持浅色 / 深色双图自动切换，可配置高度布局与排版首页 Hero 星空（星星闪烁动画 + 鼠标轨迹星星/爱心，遵循 prefers-reduced-motion 时自动禁用）首页 / 归档双列文章卡片流：标题、日期、字数、预计阅读时间、摘要、标签药丸完整响应式：桌面双列、移动端单列 + 汉堡菜单正文 .prose 排版：正文链接淡色点线下划线、悬停波浪线高亮文章页悬浮文章目录（ToC）：宽屏侧边吸附，移动端底部按钮弹出抽屉面板字数统计与预计阅读时间（中文按字、英文按词统计，约 300 字/分钟）文章信息卡：标题、永久链接、作者、发布时间、最后编辑时间、版权协议、标签广告位：自定义广告 HTML，留空显示默认占位广告分享：Mastodon / X / Bluesky / Telegram / Email / 一键复制链接上一篇 / 下一篇导航卡片代码块 macOS 风格窗口化（红黄绿点 + 语言标签 + 复制按钮）站内功能站内搜索：顶部搜索按钮（快捷键 Ctrl/Cmd + K），前端实时过滤标题与摘要，索引按需加载并缓存RSS 订阅入口（导航按钮 + 页脚图标）回到顶部（长页面滚动后出现）嵌套评论，最深 6 层，回复表单随位置自动调整样式后台与管理「设置外观」页左侧悬浮选项目录 + 右侧内容按 6 组分类，字段再多也不迷路主题配置支持 JSON 导入 / 导出，换主题、换机器一键迁移社交链接与友情链接提供可视化编辑器，无需手写 JSON页面顶部自动显示当前主题版本与发行版链接兼容 XCaptcha 评论验证码插件（启用即生效，无需改主题）自定义 Gravatar 头像源（国内可用 cravatar.cn 加速）代码高亮采用 Gruvbox 配色方案：Gruvbox Light（浅色，奶油纸底 #fbf1c7）与 Gruvbox Dark（深色，#171412）自动适应主题模式，默认跟随系统 / 站点主题，访客手动切换后同步生效。高亮库为本地内置的 highlight.js 11.9.0（assets/js/highlight.min.js），仅文章 / 独立页面加载，无需外网。环境要求Typecho：1.3.x 稳定版（1.2.x 亦可，功能按 1.3 开发）PHP：7.4 起；推荐 8.0+（兼容 8.1 / 8.2 / 8.3）数据库：MySQL 5.7+（含 8.x）、SQLite 均可浏览器：现代浏览器（Chrome / Edge / Firefox / Safari 最新两个大版本）；搜索浮层与部分动效依赖 ES6+ 与 fetch网络：无要求。字体、代码高亮、图片等全部资源随主题本地化，内网 / 离线环境完整可用（仅功能跳转链接如分享、备案查询需要外网）安装与升级安装将主题文件夹命名为 usb 上传到 Typecho 主题目录 /usr/themes/进入后台 控制台 → 外观，启用主题进入 外观 → 设置外观，按需填写配置后点击「保存设置」升级备份当前主题配置：设置外观页顶部「导出 JSON」用新版本文件覆盖旧主题文件（主题配置保存在 Typecho 数据库中，不会被覆盖，可放心替换）如需要刷新全站静态资源缓存，仅需递增 index.php 的 @version，并强制刷新浏览器验证页面类型主题全部页面由 Typecho 模板机制实现，共 8 类：页面模板说明首…

二十载岁月流转，盼再入一次有你的梦
type: item
date: 2026-08-27T09:00:00+08:00
description: 又逢农历七月十五，恍然之间，已是整整二十年。总忍不住翻起你的年岁，二十载光阴流转，四季更迭二十轮，许多人事都慢慢模糊，可关于你的细碎记忆，依旧清晰地嵌在心底，从未褪色。身为家里的长子，早早便分家立户，独自扛起了自己的四口之家的重担。从我记事起，你就常年跟着建筑项目四处奔波讨生活。为了养家糊口，你常年远赴外省，足迹落在五河、大庆、哈尔滨...这些遥远的地方。我的童年，几乎都是在“等你回家”中度过。一年到头，唯有过年短短数日，方能盼到你归来的身影。你一辈子勤恳节俭，向来舍不得亏待家人，却唯独苦了自己。平日里身体偶有不适，也总当作小事，咬牙扛过。总盼着等孩子们成家立业，便能好好歇一歇，不再奔波劳碌，未曾想，就此永久停歇。刚开始那几年，我常常会做梦。梦里都是你，你并没有离开，只是去了很远很远的北方务工，太忙、太累，没有时间回家。还曾听人说过，在哪里哪里见过你。我甚至梦过自己去找你，还真被我找到了，只是你不认识我了。带你回家，可你始终沉默寡言，从来不跟我多说一句话，早出晚归。就这样相处了好几个月，还是收拾行囊出远门了...岁月是无声的良药，也是无声的告别。往后数年，梦见你的次数越来越少了，才偶然梦见一次。再往后的十几年，梦境愈发稀少，时至今日，已是许久不曾于梦里见你。当年那个日日盼你回家的小孩，如今亦是两个孩子的父亲。也扛起家庭的责任、辛劳与牵挂，才终于读懂，当年你常年漂泊在外的无奈。二十年人事匆匆，岁岁年年，思念从未消散。我常常悄悄期许，能否再有一次机会，好好做一次有你的梦。倘若梦中得以相见，便备上一杯好酒，敬你半生劳苦，纵然无言，远远看上一眼也好。山河依旧，岁月绵长。把酒遥怀，念自心上。

回首 04‑05 年个人网站，与书画家李金山先生的笔墨际遇
type: item
date: 2026-08-13T12:29:00+08:00
description: 整理电脑里的旧文件时，翻出了一批扫描件，思绪一下子被拉回到二十多年前。2004 到 2005 年间，凭着兴趣学习制作了一个小网站，在网站上陆续发了一些书画作品的宣传内容，其中就有李金山先生的作品。本以为只是网络上一次普通的分享，没想到李先生看到后，特地打电话过来与我沟通交流，末了还亲笔题写了几幅字，邮寄给我。现在回想起来，那份意外与惊喜依然清晰。一个素未谋面的书画家，因为一个小小的网站，愿意以这样的方式回应一个年轻人的热情，这份厚道与真诚，让人感念至今。遗憾的是，后来老家搬家，辗转之间，那几幅原稿没能留住。每每念及，总觉可惜。所幸当年收到作品后便第一时间扫描存档，这些电子档成了那段缘分最实在的见证。李金山先生，号听泉阁主人，洛阳市栾川县人。他自幼酷爱书画，植根于伊河水浇灌的沃土，成长在八百里伏牛山的博大怀抱里。明山秀水赋予了他艺术的灵性，加上多年来对书画艺术的不懈追求，他的创作源泉犹如奔流不息的伊河之水，滋润着书画艺术的生命之树，根深叶茂，长青不枯。如今再看这些扫描件（当时用了第一幅字做了网站的LOGO图），字迹依旧苍劲有力。纸本虽失，墨韵长存，这段因网站而起的书画因缘，也便成了岁月里一份值得珍藏的记忆。

解决帝国 CMS7.5 升级到 8.0 后，使用图片模型的栏目新增编辑内容没法加载的问题
type: item
date: 2026-08-03T17:08:00+08:00
description: 前段时间将之前所有的帝国 CMS7.5 的站点，全部批量升级至 8.0。升级完成后，登录系统后台随意点了几个功能页面没有什么问题。最近给一个站点新增内容，发现使用“图片系统数据表 (phome_ecms_photo)”的栏目，新增和编辑内容均无法加载内容。而使用“新闻系统数据表 (phome_ecms_news)”的栏目，则没有这个问题。各种更新缓存，查看文件夹是否有权限，无果后，咨询豆包尝试解决问题，均是答非所问，都没有能解决问题。帝国论坛搜索搜索前人是否有同样问题。于是，就有了下面的解决方案：图片模型的图片集 morepic，安装一个 8.0 的系统，把 morepic 的代码拷贝到升级后的网站后台对应位置即可。输入表单替换html代码： 图片地址前缀: 远程保存 生成缩图 ：<input type=text name="mcreatespicwidth" size=4 value="<?=$public_r['spicwidth']?>">*<input type=text name="mcreatespicheight" size=4 value="<?=$public_r['spicheight']?>">(宽*高) <?php if(TranmoreIsOpen()) { ?> <input type="button" name="Submit" value="多选上传" onclick="window.open('ecmseditor/tranmore/tranmore.php?type=1&classid=<?=$classid?>&filepass=<?=$filepass?>&infoid=<?=$id?>&modtype=0&sinfo=1&ecmsdo=ecmstmmorepic&tranfrom=2<?=$ecms_hashur['ehref']?>&oldmorepicnum='+document.add.morepicnum.value,'ecmstmpage','width=700,height=550,scrollbars=yes');"> <?php } ?> 编号 缩图 (双击选择) 大图 (双击选择) 图片说明 <?php if($ecmsfirstpost==1) { ?> <?php $morepicnum=3; for($mppathi=1;$mppathi<=$morepicnum;$mppathi++) { ?> <?=$mppathi?> <input name=msmallpic[] type=text id='msmallpic<?=$mppathi?>' size=28 ondblclick="SpOpenChFile(1,'msmallpic<?=$mppathi?>');"> <input name=mbigpic[] type=text id='mbigpic<?=$mppathi?>' size=28 ondblclick="SpOpenChFile(1,'mbigpic<?=$mppathi?>');"> <input name=mpicname[] type=text id='mpicname<?=$mppathi?>'> <?php } ?> <?php } else { $morepicpath=""; $morepicnum=0; if($r['morepic']) { $r['morepic']=ehtmlspecialchars(stripSlashes($r['morepic'])); //地址 $j=0; $pd_record=explode("\r\n",$r['morepic']); for($i=0;$i<count($pd_record);$i++) { $j=$i+1; $pd_field=explode("::::::",$pd_record[$i]); $morepicpath.=" ".$j." 删 "; } $morepicnum=$j; $morepicpath=" ".$morepicpath." "; } echo $morepicpath; } ?> 地址扩展数量: <input name="morepicnum" type="hidden" id="morepicnum" value="<?=$morepicnum?>"> 投稿表单替换html代码： 图片地址前缀: 编号 缩图 大图 图片说明 <?php if($ecmsfirstpost==1) { ?> <?php $morepicnum=3; for($mppathi=1;$mppathi<=$morepicnum;$mppathi++) { ?> <?=$m…

重新设计 aijun 的个人形象 LOGO
type: item
date: 2026-07-26T12:47:00+08:00
description: 从 2005 年至 2025 年的 20 年，我的 LOGO 一直是一个 @ 图形，之前设计的名片上在用。年初的时候想为自己重新设计了一个 LOGO，用于适配个人博客、名片及社交账号等场景。结合多种想法，考虑以 aijun 的核心字母「Ai」、经典笑脸符号为双创意原点，同时结合当下人工智能（AI）的热点，通过图形同构手法实现多元素融合，打造兼具身份辨识度与科技时代感的个人视觉标识。这次 aijun 的 LOGO 的设计锚定三重核心内涵：字母「Ai」既是「aijun」的名称核心前缀，承载个人身份识别属性，也直接呼应人工智能的技术主题，笑脸符号传递真诚亲和的人格气质。打破元素边界，将字母 A 的三角结构与笑脸弧形轮廓深度同构：A 的双侧斜向线条承接笑脸上半轮廓，替代圆形上沿，底部保留舒展的微笑弧线，让理性的字母形态天然自带情绪张力；字母 i 保留圆点与竖线结构，平衡整体视觉，实现 “识 aijun、见笑脸、联 AI” 的三重识别效果。细节采用统一粗细的圆润线条，转角全柔化处理，剔除冗余装饰，保证视觉风格高度统一。理念上，LOGO 以个人身份为基础，强化「aijun」的专属品牌形象；结合当下 AI 技术爆发的时代趋势，传递对技术前沿的关注与探索；以情感表达为内核，笑脸元素为理性的字母符号注入温度，传递博客内容输出中真诚、友好的表达姿态，打破技术与文字内容的距离感。用极简的图形语言完成了个人身份与气质的双重表达，克制而有记忆点，契合个人博客、名片等轻量化、个性化的使用场景。设计完成后的成稿：贴一个之前 LOGO 和 现在的 LOGO 对比图：

Nginx服务器上如何配置规则，拦截AI爬虫、垃圾SEO蜘蛛采集器、拦截空UA
type: item
date: 2026-06-12T17:54:00+08:00
description: 网站每天消耗大量流量，排查服务器日志后才发现，这些流量大多来自毫无价值的垃圾蜘蛛、AI爬虫、各种垃圾SEO采集器。这些垃圾蜘蛛不仅不会为网站带来任何正向价值，反而会持续占用服务器带宽和资源，拖慢网站加载速度，甚至影响正常用户访问。想要从根源上解决这个问题，最直接有效的方法就是屏蔽它们。当然，不能影响正常用户、不影响百度 / 谷歌 / 必应。我整理了一些规则，专门用于屏蔽各类常见垃圾蜘蛛及无效的ai爬虫，建议收藏备用或转摘。Nginx 配置文件（以宝塔为例）位置：网站 → 你的站点 → 设置 → 伪静态# 1. 拦截 AI 爬虫 if ($http_user_agent ~* "GPTBot|ChatGPT|ClaudeBot|Anthropic|OpenAI|Perplexity|PPLX|Google-Extended|Applebot-Extended|Amazonbot") { return 403; } # 2. 拦截垃圾 SEO 蜘蛛 / 采集器 if ($http_user_agent ~* "AhrefsBot|SemrushBot|MJ12bot|DotBot|BLEXBot|Webdup|Ezooms") { return 403; } # 3. 拦截 空UA / 极短UA（扫描器、恶意访问） if ($http_user_agent ~* "^$|^.{0,5}$") { return 403; }同时配合加 robots.txt 规则# AI 爬虫 User-agent: GPTBot Disallow: / User-agent: OAI-SearchBot Disallow: / User-agent: ChatGPT-User Disallow: / User-agent: ClaudeBot Disallow: / User-agent: anthropic-ai Disallow: / User-agent: PerplexityBot Disallow: / User-agent: PPLX-* Disallow: / User-agent: CCBot Disallow: / User-agent: Google-Extended Disallow: / User-agent: Applebot-Extended Disallow: / User-agent: Amazonbot Disallow: / User-agent: YouBot Disallow: / User-agent: ByteDance Disallow: / User-agent: cohere-ai Disallow: / User-agent: Claude-Web Disallow: / # 垃圾蜘蛛 User-agent: AhrefsBot Disallow: / User-agent: SemrushBot Disallow: / User-agent: MJ12bot Disallow: / User-agent: DotBot Disallow: / User-agent: BLEXBot Disallow: / User-agent: Webdup Disallow: / User-agent: Ezooms Disallow: / User-agent: ScreamingFrog Disallow: / User-agent: SeznamBot Disallow: / User-agent: PetalBot Disallow: / User-agent: AspiegelBot Disallow: / User-agent: Go-http-client Disallow: / # 正常搜索引擎 User-agent: Baiduspider Allow: / User-agent: Googlebot Allow: / User-agent: Bingbot Allow: / User-agent: Googlebot-Image Allow: / User-agent: Bingbot-Image Allow: / User-agent: * Crawl-delay: 5 Allow: /保存为 robots.txt，文件拷贝放置到网站更目录下。访问测试：https://你的域名/robots.txt，能打开就说明生效。爬虫 UA 详细说明（所属主体、用途、封禁原因）一、AI 类爬虫（用于大模型训练 / AI 检索，纯消耗资源，无有效访客）User-Agent所属公司/项目主要用途封禁原因GPTBot、ChatGPT-User、OAI-SearchBotOpenAI（美国）爬取全网内容，用…

江苏省美术与设计类高考志愿填报及录取规则详解
type: item
date: 2026-06-08T12:36:00+08:00
description: 又是一年高考时，每年江苏美术生填报志愿时，绝大多数家长和孩子都很迷茫：看不懂综合分怎么算、分不清录取批次区别、不清楚平行志愿有哪些风险，很多人凭着旧经验、乱看网上碎片信息填报，最后出现滑档、退档、分数浪费等问题。网上艺考政策内容杂乱、真假混杂，很容易误导大家。本文依据2025年江苏省教育考试院的官方政策结合博主的亲身经历撰写，给江苏省美术类考生和零基础家长使用。全篇不讲生硬的官方套话，用直白、接地气的语言，一步步讲清报考条件、分数算法、批次规则、投档逻辑、填报技巧和避坑要点，内容系统、完整、可以照着参考使用。读完本文，家长和考生可以彻底搞懂江苏美术艺考录取逻辑，精准定位自己的分数段位，科学排好志愿梯度，避开绝大多数填报误区，稳稳用好每一分成绩，选到最合适的大学和专业。第一章 江苏省美术与设计类高考报考基础认知1.1 报考资格与硬性门槛江苏美术高考不是“有分数就能报”，有几条硬性门槛，缺一不可。家长一定要提前核对，避免辛苦考完却没有录取资格。第一，必须完成普通高考正式报名。想要参加美术统考、校考、志愿填报和录取，前提是完成江苏省普通高考报名，没有报名记录的考生，后续所有艺考流程都无法参与。第二，美术省统考必须合格。按照最新江苏艺考政策，省统考不合格的考生，没有资格参加校考，也没有任何美术类专业的录取资格。哪怕文化课考得再好，也走不了美术批次，只能按普通类报考。第三，严格区分物理类、历史类。江苏美术生分物理、历史两类单独录取，计划、分数线、投档数据全部独立，互不通用。家长查往年数据、排志愿时，一定要对照孩子的选科，不能混看、乱参考。第四，文化、专业双成绩都要看。美术录取不是只看画画，也不是只看文化课，必须两项成绩同时达标、综合计算，单方面成绩再好也不能保证录取。1.2 核心分数规则（家长最关心）江苏美术录取不单独看文化分、也不单独看专业分，全程以综合投档分排名录取。综合分高低，直接决定孩子能不能上岸、能上什么层次的学校。2025年官方统一综合分计算公式：美术与设计类投档分=[(高考文化分÷文化满分)×0.6+(专业分÷专业满分)×0.4]×750，结果四舍五入取整。简单理解权重：文化课占60%，专业课占40%。很多孩子专业分很高，但文化课偏弱，最后综合分被反超、错失好学校，就是这个原因。家长日常快速估算，可以用简化公式：投档分=文化分×60%+专业分，误差极小，方便快速定位分数水平。另外家长一定要记住双控制线规则：孩子的文化分、专业分，必须同时过当年的省最低控制线。只要有一门没过线，直接失去本科、专科所有美术类录取资格。通俗总结：双过线是进门资格，综合分是排名名次，文化课是拉分关键，三项共同决定孩子的录取档次。第二章 江苏美术与设计类录取批次与志愿设置（核心规则）2.1 整体批次架构很多家长容易搞混：江苏美术生没有普通本科批次，所有美术本科名额，全部集中在本科提前批；专科名额单独划为专科批次。整体就两大批次：本科提前批+专科批次。上一批次没被录取，完全不影响下一批次填报和录取。2.2 本科提前批细分规则（重点）本科提前批是美术生读本科的唯一机会，其中分为两个小批，录取方式、志愿数量差别很大，家长一定要分清。第1小批：校考/戏曲联考批次。采用顺序志愿，只能填1个院校专业组。仅针对拿到院校校考合格证、戏曲联考合格的考生。普通统考合格考生不能填报。这个批次风险更高，学校优先录取第一志愿考生，分数高也不一定稳录，适合有优质校考成绩的孩子冲名校。第2小批：省统考批次。绝大多数江苏美术生的主力录取批次，采用平行志愿，可以填20个院校专业组，每个组能填4个专业+专业服从调剂。招生名额最多、学校选择最广、录取最稳，只要双过线都能填报。2.3 专科批次志愿规则美术与设计类专科批次同样分两类：统考类可以填20个平行院校专业组，规则和本科第2小批一致；戏曲联考类只能填1个院校专业组。提醒家长：本科批次滑档、退档的孩子，只要双过线，专科批次正常填报、正常录取，批次之间互不影响。2.4 关键概念通俗解读1. 院校专业组院校专业组是江苏志愿填报的最小单位。简单说：一所大学会把办学地点、学费、选科要求、培养方向相近的专业，归为同一个“专业组”。调剂只在同一个组内进行，不同组之间不能互调。填报时必须符合该组的选科要求，才能报考。2. 平行志愿 vs 顺序志愿平行志愿（本科第2小批、省统考）：分数说了算。全省孩子按综合分从高到低排队，分数高的先投档，志愿顺序只做检索参考，非常公平、稳妥，滑档风险低。顺序志愿（校考小批、戏曲联考）：志愿优先说了算。学校先收第一志愿的学生，名额有空再收后面志愿的孩子。哪怕分数更高，志愿靠后也可能被低分考生挤掉，风险更大。3. 专业服从调剂调剂只针对当前填报的这个院校专业组。勾选服从调剂：投档进校后，填报的4个专业满额了，学校会把孩子调…

帝国CMS列表的分页导航标签show.listpage样式优化
type: item
date: 2026-04-24T10:43:00+08:00
description: 帝国CMS的分页导航（列表式）[!--show.listpage--]默认的样式没达到自己的需求，自己调整了一下。修改class/t_functions.php，替换行100~169（7.5版本。其他版本可能不同行）//列表模板之列表式分页 function sys_ShowListMorePage($num,$page,$dolink,$type,$totalpage,$line,$ok,$search="",$add){ global $fun_r,$public_r; if($num<=$line) { $pager['showpage']=''; return $pager; } //文件名 if(empty($add['dofile'])) { $add['dofile']='index'; } //静态页数 $repagenum=$add['repagenum']; $page_line=$public_r['listpagelistnum']; $snum=2; //$totalpage=ceil($num/$line);//取得总页数 //$firststr=' '.$num.' '; //上一页 if($page<>1) { $toppage=''.$fun_r['startpage'].''; $pagepr=$page-1; if($pagepr==1) { $prido=$add['dofile'].$type; } else { $prido=$add['dofile'].'_'.$pagepr.$type; } $prepage=''.$fun_r['pripage'].''; } //下一页 if($page!=$totalpage) { $pagenex=$page+1; $nextpagelink=$repagenum&&$repagenum<$pagenex?eReturnRewritePageLink2($add,$pagenex):$dolink.$add['dofile'].'_'.$pagenex.$type; $lastpagelink=$repagenum&&$repagenum<$totalpage?eReturnRewritePageLink2($add,$totalpage):$dolink.$add['dofile'].'_'.$totalpage.$type; $nextpage=''.$fun_r['nextpage'].''; $lastpage=''.$fun_r['lastpage'].''; } $starti=$page-$snum<1?1:$page-$snum; $no=0; for($i=$starti;$i<=$totalpage&&$no<$page_line;$i++) { $no++; if($page==$i) { $is_1=''; $is_2=""; } elseif($i==1) { $is_1=''; $is_2=""; } else { $thispagelink=$repagenum&&$repagenum<$i?eReturnRewritePageLink2($add,$i):$dolink.$add['dofile'].'_'.$i.$type; $is_1=''; $is_2=""; } $returnstr.=''.$is_1.$i.$is_2; } $returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage; $pager['showpage']=$returnstr; return $pager; }下面是自己常用的CSS样式：.listpage{margin-top:30px;text-align:center;clear:both;height:40px;line-height:40px;font-size:16px;} .listpage a{color:#d00;margin-right:8px;text-decoration:none;padding:6px 12px;border:1px solid #eee;border-radius:4px;} .listpage a:hover{color:#d00;background-color:#f5f5f5;text-decoration:none;border:1px solid #d00;} .listpage a:active{color:#d00;background-color:#f5f5f5;border:1px solid #666;} .listpage span.…

帝国CMS文章内容页下载附件时恢复为原始名称
type: item
date: 2026-03-23T08:39:00+08:00
description: 在你的内容模板里加入下面的代码，可显示出原始文件名，下载保存时也会保存为原始文件名： 原模板下载后的附件名都是随机的一长串数字，这样改一下，就不用手动再去改下载后的文件名了，很方便。（注：后台编辑文章时还是不变的，附件名还是一串乱七八糟的数字，发布后前台会改变）效果演示：另一个：下载模型中，将下载文件名改为与标题一致在“最终下载页模板”下方加入以下JS，可实现下载文件时存档文件名与标题一致，自动加入文件后辍，省了让那一长串随机数字带来的烦恼： 文章来源：http://www.artery2000.com/news/2025-09-23/109.html

Typecho 博客主题 Facile 个性化修改日志
type: item
date: 2026-03-04T16:04:00+08:00
description: 博客上一个主题是 Initial 用了2-3年，后来更换到 Facile，目前是2.5版本，为方便以后跟随主题作者更新，根据自己的需求做了一些修改。1、自定义CSS样式header .navbar{border-width:0 0 1px 0;} .post-list .post .post-title{font-size:26px;} .sidebar section h2{font-size:14px;} .sidebar section ul li{font-size:14px;} .sidebar section ul li a{font-size:14px;} .sidebar .latest-comment .media-body p{font-size:14px;} .text-color{font-size:14px;word-wrap:break-word;word-break:break-all;} .post-page article .post-content p{line-height:1.8;} .post-page article .post-content img:not(.logo){display:inline;} .post-page article .post-content blockquote{font-size:14px;padding:10px 10px 10px 20px;border-radius:0.5rem;} .light-color .post-page article .post-content blockquote{border-left:4px solid #ca896d;background:#f3f3f3;color:#444;} .dark-color .post-page article .post-content blockquote{border-left:4px solid #d69d85;background:#1e1e1e;color:#bbb;} .archive-title{border-radius:4px;padding:18px 20px 10px;text-align:center;} .archive-page .archives .archives-item ul li .day{text-align:right;} .light-color .archive-title{background:#f3f3f3;} .dark-color .archive-title{background:#16161a;} .nav-item{font-size:14px;} .nitxt .form-control{height:calc(2.25em + .75rem + 3px);} .nitxt .required{color:#f00;} .text-truncate{font-size:16px;} .table-responsive{font-size:16px;} code{font-size:100%;padding:0 4px;} #comments .comment-input .row div{margin-bottom:0;} #comments .comment-input .row div.nitxt{margin-bottom:16px;} #comments .comments-lists .comment-author .comment-reply a, #comments .comments-lists .comment-author .comment-reply i{font-size:12px;color:#888;} #copyright-info p{font-size:.8125rem;line-height:120%;} #copyright-info p a{font-size:.8125rem;} footer .text-center {font-size:12px;} @media screen and (max-width:575px) { .post-list .post .post-title{font-size:22px;} .post-page .post-title{font-size:24px;} } @media (prefers-color-scheme: dark) { .archive-title{background:#16161a;} .post-page article .post-content blockquote{border-left:4px soli…