前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Typecho 文章内链接在新窗口打开实现方式

Typecho 文章内链接在新窗口打开实现方式

作者头像
囍楽云
发布2022-12-29 14:30:32
1.4K0
发布2022-12-29 14:30:32
举报
文章被收录于专栏:囍楽云博客囍楽云博客

默认情况文章中如果有添加链接,那么是从当前窗口跳转的,并且外链没有添加标签,不利于SEO,文章内链接新窗口并添加标签如下。

  方法一:修改系统文件

  找到 /var//.php 这个文件,在105行,也就是 $attrs'href' = $this->escape($inline->(''), true); 代码之后添加如下两行代码:

   $attrs'target' = $this->escape(_blank, true);

代码语言:javascript
复制
    $attrs['rel'] = $this->escape(nofollow, true);

  最后保存查看效果,修改后的完整代码,请注意对比:

   case CommonMark_Element_InlineElement::TYPE_LINK:

代码语言:javascript
复制
                    $attrs['href'] = $this->escape($inline->getAttribute('destination'), true);
                    $attrs['target'] = $this->escape(_blank, true);
                    $attrs['rel'] = $this->escape(nofollow, true);
                    if ($title = $inline->getAttribute('title')) {
                        $attrs['title'] = $this->escape($title, true);
                    }

  注:如果你是用的 1.0 以上版本请按照下面方法更改:

  修改系统代码

  找到 .php 这个文件,这里和上面老版本文件不同。

  在 self::$parser->hook('', array('', '')); 后面,添加下面代码

   self::$parser->hook('afterParseInline', array('Markdown', 'addLinkTargetBlank'));

  然后在 public static ($html){} 这个代码块后面,添加下面代码

   /**

代码语言:javascript
复制
     * addLinkTargetBlank
     * 
     * @param string $html
     * @return string
     */
    public static function addLinkTargetBlank($html)
    {
        return preg_replace("//i", "", $html);
    }

  方法二:前端通过JS跳转

  在前端,通过 JS解决

  逻辑是查找某个标签的id下所有的a标签,然后给每个添加属性,如下

   var pageAnchors = document.getElementById('post-content').getElementsByTagName('a');

代码语言:javascript
复制
    for (var i=0; isrc_add,$options->cdn_add,$obj->content);
        }
        $obj->content = preg_replace("/content);
        echo trim($obj->content);
    }

  如果需要添加rel=,则如下

   function parseContent($obj){

代码语言:javascript
复制
        $options = Typecho_Widget::widget('Widget_Options');
        if(!empty($options->src_add) && !empty($options->cdn_add)){
            $obj->content = str_ireplace($options->src_add,$options->cdn_add,$obj->content);
        }
        $obj->content = preg_replace("/content);
        echo trim($obj->content);
    }

  (https://xuan.ddwoo.top/%22([%5E/%22]*%29/%22/i%22,)该方法的原理就是正则文章的超链接标签,然后加上相应处理即可。使用该方法需要修改主题 post.php 文件,将默认的内容输出 改成 。

  方法四、通过修改主题Header.php文件

  最近看到一种新的方法是通过修改主题header.php文件在顶部加上即可。

本文共 324 个字数,平均阅读时长 ≈ 1分钟(https://xuan.ddwoo.top/%22([%5E/%22]*%29/%22/i%22,)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档