这篇文章上次修改于 1500 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
昨天有个朋友问我,Typecho 的文章链接能不能变成跳转外链。一开始他提出这个问题我也感到很奇葩,经过他的详细说明,主要是因为他曾经在熊掌号发过一次,就不想在自己博客反复发了,所以想把文章链接直接跳转过去。这个问题有两个解决方案,一个是直接在文章里面加上 JavaScript 代码实现跳转(体验略差),或是修改 Typecho 的模板,识别特定字段,直接把链接显示在网页里面,实现点击直达。
插入 JS 方法
这个方法非常简单,你只需要在对应的文章里面编写这段内容:
<script>window.location.href = "https://paul.ren"</script>
即可从文章页面直接跳转到 https://paul.ren
这个网站。因 Typecho 不同版本存在差异,如果这样设置之后访问文章这段内容显示成文字了,请在代码前后各增加一行,输入三个 ! 符号即可
修改模板方法
这个需要修改你模板的代码,相对于上面的方法,他需要更改 PHP 输出的内容,所以难度也相对更高,建议有 PHP 相关经验者尝试。
首先打开 Typecho 的后台,找到左上角的菜单,点击 控制台 > 外观 > 编辑当前外观 在右侧的列表里找到 index.php
文件。
模板一般会出现 <?php while($this -> next()): ?>
这样的代码,我们需要编辑的就是这段区域。这里我们将由 Single 主题为例:
<?php while($this -> next()): ?>
<div class="post-item">
<h2>
<a href="<?php $this -> permalink() ?>"><?php $this -> title() ?></a>
<?php if($this -> authorId == $this -> user -> uid): ?> <a class="edit-link" href="<?php $this -> options -> adminUrl(); ?>write-post.php?cid=<?php echo $this->cid;?>" target="_blank">编辑</a><?php endif; ?>
</h2>
<p><?php $this -> excerpt(100); ?></p>
<div class="post-meta">
...
</div>
</div>
<?php endwhile; ?>
我们找到 <?php $this -> permalink() ?>
这段用于输出链接的函数,将它替换为:
<?php
if($this -> fields -> customLink){
$this -> fields -> customLink();
}
else{
$this -> permalink();
}
?>
然后在你写文章的时候展开文章编辑器下方的 自定义字段
面板,添加一个名为 customLink
的字段,填入你要跳转的链接就可以啦!
- 字段名称:customLink
- 字段类型:字符
- 字段值:https://paul.ren
这样,这篇文章的链接在首页里点击就自动跳转到 https://paul.ren
了。如果还需要改的更细致,可以参照上面的方法一并修改 archive.php
文件,这个是在筛选分类、日期下的文章展示页面。
已有 5 条评论
是三个 ! ,而非三个 `(指正
三个 ` 是 Markdown 中的代码块
@Scvoet 哈哈哈,还一下子真没注意到 😂
TP 还是挺方便的,改起来也不是太复杂
这个需求确实有点奇葩的。熊账号不是能自动同步过去吗?
@心灵博客 我是百家号,不是熊掌号,而且熊掌号早就倒闭了