通过修改代码实现发布的文章页面直接跳转外链。
插入 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
文件,这个是在筛选分类、日期下的文章展示页面。
以上转自:保罗的小宇宙 (paugram.com)
编写插件方法
插件启用步骤
- 上传插件:将调整后的代码保存到
Plugin.php
中,并将文件夹命名为RedirectToCustomURL
,上传到usr/plugins/
目录。 - 启用插件:在 Typecho 后台,导航到 “控制台” -> “插件”,找到
RedirectToCustomURL
插件并点击 “启用”。 - 设置自定义字段:在发布或编辑文章时,添加
redirect_url
自定义字段,值为你希望跳转的目标 URL。
<?php
/**
* RedirectToCustomURL 插件
* 实现文章页面自定义跳转到其他域名
*
* @package RedirectToCustomURL
* @author GPT4o
* @version 1.0.0
* @link https://chatgpt.com
*/
class RedirectToCustomURL_Plugin implements Typecho_Plugin_Interface
{
/**
* 激活插件方法, 如果激活失败, 抛出异常
*/
public static function activate()
{
// 为文章渲染添加回调
Typecho_Plugin::factory('Widget_Archive')->beforeRender = array('RedirectToCustomURL_Plugin', 'redirectPost');
return _t('RedirectToCustomURL 插件已激活');
}
/**
* 禁用插件方法, 如果禁用失败, 抛出异常
*/
public static function deactivate()
{
return _t('RedirectToCustomURL 插件已禁用');
}
/**
* 插件配置面板
*
* @param Typecho_Widget_Helper_Form $form 配置面板
*/
public static function config(Typecho_Widget_Helper_Form $form)
{
// 插件不需要特殊配置
}
/**
* 个人用户的配置面板
*
* @param Typecho_Widget_Helper_Form $form
*/
public static function personalConfig(Typecho_Widget_Helper_Form $form)
{
// 插件不需要个人用户特殊配置
}
/**
* 实现自定义跳转功能
*/
public static function redirectPost()
{
// 获取当前文章对象
$archive = Typecho_Widget::widget('Widget_Archive');
// 确保仅在单篇文章时执行跳转逻辑
if ($archive->is('single')) {
// 获取自定义字段的跳转链接
$redirectUrl = $archive->fields->redirect_url;
// 检查是否设置了跳转链接
if (!empty($redirectUrl)) {
// 跳转到自定义链接
header('Location: ' . $redirectUrl);
exit;
}
}
}
}