typecho 插入图片时替换URL中的域名为根目录的方法
归属分类: 开发 评论数: 0 个
typecho 插入图片时替换URL中的域名为根目录的方法
归属分类: 开发 评论数: 0 个

起因

测试环境和生成环境的域名不同,导致整站上传后图片不显示。

解决办法

  1. 数据库替换
    这种方式每一次换域名都会遇到,很麻烦,弃用。
  2. 修改js
    修改后,每次插入图片是不带域名前缀的,网站根目录

    #修改前
    [1] http://spooking.cn/usr/upload/xxxxxxx
    
    #修改后
    [1] /usr/upload/xxxxxxx
使用方法2再也不用担心迁移的时候图片显示不出来了。

具体操作

  1. 修改 /admin/editor-js.php

    Typecho.insertFileToEditor = function (file, url, isImage) {
             var button = isImage ? imageButton : linkButton;
             
             // 下面是新增代码
             var myDName = window.location.hostname;
             var imDName = url.match(/^(?:https?:\/\/)([a-z0-9-_\.]+)/im)[1];
             if(myDName==imDName)url=url.replace(/^(?:https?:\/\/)([a-z0-9-_\.]+)/im,'');
             // 新增结束
    
             options.strings[isImage ? 'imagename' : 'linkname'] = file;
             button.trigger('click');
    
             var checkDialog = setInterval(function () {
                 if ($('.wmd-prompt-dialog').length > 0) {
                     $('.wmd-prompt-dialog input').val(url).select();
                     clearInterval(checkDialog);
                     checkDialog = null;
                 }
             }, 10);
         };
  2. 修改 /admin/js/pagedown.js

    #替换
    ||(t="http://"+t))
    #为
    ||/^\//i.test(t)||(t="http://"+t))