介绍
在 Typecho 中,当文章设置密码保护时,默认情况下 文章的标题会显示此内容被密码保护”而不是原始标题。这会导致在文章列表、单篇文章页面以及浏览器标题栏中显示不友好。
本教程仅针对于 OneBlog 主题进行修改,(其他主题雷同)使密码保护的文章的标题显示为“密码保护:[原标题]”,而非显示此内容密码保护。同时,浏览器标题栏也会正常显示文章原始标题。
修改步骤
1. 修改 post.php 文件
post.php 是单篇文章页面模板,需要修改标题显示部分。
修改位置:
- 第15行:有封面图的文章标题
- 第32行:移动端文章标题
- 第52行:无封面图的文章标题
原代码:
<h1><?php $this->title() ?></h1>修改后代码:
<h1><?php echo $this->hidden ? '密码保护:' . $this->row['title'] : $this->row['title']; ?></h1>2. 修改 index.php 文件
index.php 是首页模板,需要修改 banner 和文章列表中的标题显示。
修改位置:
- Banner 部分(约第29行):
'title' => $post->title, - 文章列表部分(约第109行):
<h1 class="animated fadeInUp"><?php $this->title();?></h1>
Banner 原代码:
$posts[] = [
'link' => $post->permalink,
'title' => $post->title,
'thumb' => $thumbnail,
];Banner 修改后代码:
$posts[] = [
'link' => $post->permalink,
'title' => $post->hidden ? '密码保护:' . $post->row['title'] : $post->row['title'],
'thumb' => $thumbnail,
];文章列表原代码:
<h1 class="animated fadeInUp">
<?php $this->title();?>
</h1>文章列表修改后代码:
<h1 class="animated fadeInUp">
<?php echo $this->hidden ? '密码保护:' . $this->row['title'] : $this->row['title'];?>
</h1>3. 修改 archives.php 文件
archives.php 是归档页面模板,需要修改文章列表中的标题显示。
修改位置:
- 约第42行:
'title' => $archives->title,
原代码:
$articlesByYear[$year][] = [
'title' => $archives->title,
'permalink' => $archives->permalink,
'date' => date('m月d日', $archives->created)
];修改后代码:
$articlesByYear[$year][] = [
'title' => $archives->hidden ? '密码保护:' . $archives->row['title'] : $archives->row['title'],
'permalink' => $archives->permalink,
'date' => date('m月d日', $archives->created)
];4. 修改 header.php 文件
header.php 是头部模板,需要修改 HTML <title> 标签的显示,确保浏览器标题栏正常显示。
修改位置:
<title>标签的 else 分支(约第22-25行)
原代码:
<?php else:?>
<?php $this->archiveTitle([
'category' => _t('%s'),
'search' => _t('包含关键字 %s 的文章'),
'tag' => _t('标签 %s 下的文章'),
'author' => _t('%s 发布的文章')
], '', ' - '); ?><?php $this->options->title(); ?>
<?php endif; ?>修改后代码:
<?php else:?>
<?php if ($this->is('post')): ?>
<?php echo $this->row['title']; ?> - <?php $this->options->title(); ?>
<?php else: ?>
<?php $this->archiveTitle([
'category' => _t('%s'),
'search' => _t('包含关键字 %s 的文章'),
'tag' => _t('标签 %s 下的文章'),
'author' => _t('%s 发布的文章')
], '', ' - '); ?><?php $this->options->title(); ?>
<?php endif; ?>
<?php endif; ?>作为原 WordPress 用户 是有点强迫症的,原本我使用的是 泽泽社长 的 Titleshow 插件 来实现的,可是升级到了 typecho1.3 正式版后插件失效了,所以只能直接自己改代码了。
帖子正文提到的【Titleshow】插件,作者【泽泽社长】以推出支持【Typecho1.3】版本的插件【Titleshow】
如后续本帖代码未被合并至主题仓库,主题更新后不想频繁修改可使用【Titleshow】。
本文著作权归作者 [ 云泥 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。

牛批
哈哈,感谢来访~