OneBlog 主题修改教程:密码保护文章标题正常显示

羽忆 143

本文转自:OneBlog 主题修改教程:密码保护文章标题正常显示 by 羽忆(呢喃博客)

介绍

在 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 正式版后插件失效了,所以只能直接自己改代码了。

这家伙太懒了,什么也没留下。
最新回复 (1)
    提示:您必须 登录 后才能查看此内容
返回
发布新帖