介绍
在 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 是归档页面模板,需要修改文章列表中的标题显示。
修改位置:
原代码:
$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> 标签的显示,确保浏览器标题栏正常显示。
修改位置:
原代码:
<?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 正式版后插件失效了,所以只能直接自己改代码了。