排行榜 统计
  • 文章总数:649 篇
  • 评论总数:10704 条
  • 分类总数:4 个
  • 最后更新:4月4日

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

本文阅读 2 分钟
首页 美化技巧 正文
本文最后更新于2023年01月08日,已超过847天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

您阅读这篇文章共耗时:

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

  方法一:修改系统文件

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

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

    $attrs['rel'] = $this->escape(nofollow, true);

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

   case CommonMark_Element_InlineElement::TYPE_LINK:

                    $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){} 这个代码块后面,添加下面代码

   /**

     * addLinkTargetBlank
     * 
     * @param string $html
     * @return string
     */
    public static function addLinkTargetBlank($html)
    {
        return preg_replace("/<a href=\"([^\"]*)\"/i", "a href=\"\\1\" target=\"_blank\"", $html);
    }
    /code/pre/p
    p如果需要添加rel=,则如下/p
    pprecode/**
     * addLinkTargetBlank
     * 
     * @param string $html
     * @return string
     */
    public static function addLinkTargetBlank($html)
    {
        return preg_replace("/a href=\"([^\"]*)\">/i", "<a href=\"\\1\" target=\"_blank\" rel=\"nofollow\">", $html);
    }

  方法二:前端通过JS跳转

  在前端,通过 JS解决

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

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

    for (var i=0; isrc_add,$options->cdn_add,$obj->content);
        }
        $obj->content = preg_replace("/<a href=\"([^\"]*)\"/i", "a href=\"\\1\" target=\"_blank\"", $obj->content);
        echo trim($obj->content);
    }

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

   function parseContent($obj){

        $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("/<a href=\"([^\"]*)\"/i", "a href=\"\\1\" target=\"_blank\" rel=\"nofollow\"", $obj->content);
        echo trim($obj->content);
    }

  该方法的原理就是正则文章的超链接标签,然后加上相应处理即可。使用该方法需要修改主题 post.php 文件,将默认的内容输出 改成 。

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

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

  1451677858.png

本文来自投稿,不代表本站立场,如若转载,请注明出处:http://xuan.ddwoo.top/index.php/archives/604/
-- 展开阅读全文 --
typecho制作打卡签到+积分功能实例教程
« 上一篇 12-21
js 怎么使用正则表达式-JavaScript正则表达式常用技巧
下一篇 » 12-21
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

发表评论

本站已加入互联网信息服务许可,请规范您的言行哦~

成为第一个评论的人

作者信息

热门文章

珍惜时间哦~

今日一言

- -
加载中...
换一句

标签TAG

热评文章