Git Product home page Git Product logo

shortlinks's Introduction

ShortLinks

有时候我们为了减少权重的流失,或者是为了隐藏某些推荐链接(比如:淘宝客、主机推荐),因此需要将外链转化为内链(淘宝客、主机推荐都是隐藏 AFF)。

Typecho 外链转内链插件,支持正文和评论者链接。

从比 1.0.9 更老的版本升级上来建议先禁用再启用。

本插件自从 1.1.0 b2 开始收费,收费方式为自由付费。 你觉得它值多少钱就付款给我多少钱!如果觉得一文不值,你也可以直接白嫖!

Buy Ryan A Coffee

或者过去 我的博客 打赏

获取 Download

最稳定版下载地址

简介 Introduction

  1. 把外部链接转换为 your_blog_path/go/key/,撰写链接页面支持修改
  2. 通过菜单“创建->短链接”设置;
  3. 自定义短链功能来自golinks
  4. 支持 referer 白名单和外链转换白名单;
  5. 支持跳转页面,可以自行制作模板放到 templates 目录下,插件设置里可选择,目前自带 5 个模板;
  6. 支持自定义字段转换(实验性功能,开启强制转换后更好用);
  7. 支持关闭指定页面的链接转换功能。添加自定义字段 noshort 即可;
  8. 支持前台渲染插件(实验性功能,插件设置中开启强制转换)

使用方法 Usage

  • 使用 Git 命令直接克隆至插件目录即可,例如: /var/www/html/usr/plugins/
  • 然后启用插件即可

其他 Others

模板使用 Template Usage

模板功能自 1.1.0 b1 开始支持更多的字段替换。

支持 Typecho 选项和主题选项字段替换。

就是平常用 $this->options->logoUrl 这样的形式调用的字段,可以直接在模板里使用 {{logoUrl}} 定义,ShortLinks 插件会自动替换。

如果发现有不支持的字段,别尝试了,就是 ShortLinks 没适配。

计划功能 Todo

  • 自定义短链接增加密码功能

感谢 Thanks

预览 Preview

暂无

shortlinks's People

Contributors

benzbrake avatar chengs2035 avatar kaygb avatar naicfeng avatar vndroid avatar whfo avatar yves-x avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

shortlinks's Issues

bug

在禁用,重新启用插件,控制台的短链管理多一个。
禁用无法在控制台删除短链管理。
image

提交一个模板

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<meta name="robots" content="noindex, nofollow" />
<meta http-equiv="refresh" content="{{delay}};url='{{url}}';">
<title>页面加载中,请稍候...</title>
<style>body{margin:0;padding:0 30px;background:#fff;font-size:12px}img{border:none}a{text-decoration:none;cursor:pointer;outline:0}a:hover{text-decoration:underline}a,a:link,a:visited{color:#1e5494}a.btn_blue:focus{border-color:#93d4fc;box-shadow:0 0 5px #60caff}a.btn_blue{display:inline-block;padding:6px 25px;margin:0;font-size:14px;font-weight:700;text-align:center;border-radius:3px;border:1px solid #0d659b;color:#fff;color:#fff!important;background-color:#238aca;background:-moz-linear-gradient(top,#238aca,#0074bc);background:-webkit-linear-gradient(top,#238aca,#0074bc);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#238aca', endColorstr='#0074bc');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#238aca', endColorstr='#0074bc')"}a.btn_blue:hover{text-decoration:none;background-color:#238aca;background:-moz-linear-gradient(top,#2a96d8,#0169a9);background:-webkit-linear-gradient(top,#2a96d8,#0169a9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a96d8', endColorstr='#0169a9');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a96d8', endColorstr='#0169a9')"}a.btn_blue:active{background-color:#238aca;background:-moz-linear-gradient(top,#0074bc,#238aca);background:-webkit-linear-gradient(top,#0074bc,#238aca);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0074bc', endColorstr='#238aca');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#0074bc', endColorstr='#238aca')";outline:0}.remind_block{overflow:hidden}.remind_block .remind_content{overflow:hidden}.remind_block .remind_title{margin-bottom:10px;padding-top:3px;font-weight:700;font-size:20px;font-family:"Microsoft YaHei","lucida Grande",Verdana}.remind_block .remind_detail{line-height:1.5;font-size:16px;color:#535353}.warning .remind_title{color:#16a085}.container{max-width:640px;margin:0 auto;padding-top:25px}.header{margin-bottom:5px}.footer{margin-top:18px;text-align:center;color:#a0a0a0;font-size:10px}.content{border:1px solid #bbb;box-shadow:0 0 3px #d4d4d4}.c-container{padding:30px}.c-footer{padding:10px 15px;background:#f1f1f1;border-top:1px solid #bbb;overflow:hidden}.c-footer-a1,.c-footer-a2{float:left}.c-footer-a2{margin:8px 0 0 15px}.safety-url{margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #dfdfdf;word-wrap:break-word;word-break:break-all}</style>
</head>
<body>
<div class="container">
<div class="header">
<img width="150" height="35" src="网站logo">
</div>
<div class="content">
<div class="c-container warning">
<div id="remind_block" class="remind_block" style="height: 260px;">
<div class="remind_content">
<div class="remind_title">
您将要访问
</div>
<div class="remind_detail">
<div class="safety-url">
{{url}}
</div>
<span style="color:#CC0000;font-weight:800;">温馨提示:</span><br/>该网页不属于 网页名称,我们无法确认该网页是否安全,它可能包含未知的安全隐患,请注意保护好个人信息!
</div>
</div>
</div>
</div>
</div>
<div class="c-footer">
<a href="{{url}}" rel="nofollow" class="c-footer-a1 btn_blue">继续访问</a><a class="c-footer-a2" href="https://your.website" rel="nofollow">返回主页</a>
</div>
</div>
<div class="footer">
<script type="text/javascript">
<!-- Begin
copyright=new Date();//取得当前的日期
update=copyright.getFullYear();//取得当前的年份
document.write("Copyright©2016-"+ update + " <a href='https://your.website' target='_blank'>你网站名称</a> All rights reserved.");//update为自动更新的年份
 //  End -->
</script>
</div>
</body>
</html>

SQLite 版本出错 SQLSTATE[HY000]: General error: 17 database schema has changed

调用堆栈:

exception 'Typecho_Db_Query_Exception' with message 'SQLSTATE[HY000]: General error: 17 database schema has changed' in /test/build/var/Typecho/Db/Adapter/Pdo.php:105
Stack trace:
#0 /test/build/var/Typecho/Db.php(354): Typecho_Db_Adapter_Pdo->query('UPDATE typecho_...', Object(PDO), 2, 'UPDATE')
#1 /test/build/var/Widget/Abstract/Options.php(69): Typecho_Db->query(Object(Typecho_Db_Query))
#2 /test/build/var/Helper.php(211): Widget_Abstract_Options->update(Array, Object(Typecho_Db_Query))
#3 /test/build/usr/plugins/ShortLinks/Plugin.php(42): Helper::addAction('shortlinks', 'ShortLinks_Acti...')
#4 [internal function]: ShortLinks_Plugin::activate()
#5 /test/build/var/Widget/Plugins/Edit.php(102): call_user_func(Array)
#6 /test/build/var/Widget/Plugins/Edit.php(308): Widget_Plugins_Edit->activate('ShortLinks')
#7 /test/build/var/Widget/Do.php(82): Widget_Plugins_Edit->action()
#8 /test/build/var/Typecho/Widget.php(221): Widget_Do->execute()
#9 /test/build/var/Typecho/Router.php(135): Typecho_Widget::widget('Widget_Do', NULL, Array)
#10 /test/build/index.php(23): Typecho_Router::dispatch()
#11 {main}

提个新功能

能不能增加附件下载的单页引导功能。或者已有其他插件中增加。

启用错误

Too few arguments to function Typecho_Db::getConfig(), 0 passed in /www/wwwroot/TY.PECHO/usr/plugins/ShortLinks/Plugin.php on line 33 and exactly 1 expected

帮忙加一个忽略(target=blank)属性的配置

现在在插件中如果有跳转内部链接的话,也会新窗口中打开,正常应该不要新窗口打开吧。因为都是后台页面。
比如 :https://xxx.xx/admin/extending.php?panel=Test%2FA.php插件panel页面中有一个链接,跳转到https://xxx.xx/admin/extending.php?panel=Test%2FB.php就会在新标签页打开了。

MariaDB 报错 SQLSTATE[42000]: Syntax error or access violation: 1064

更新版本后,启用插件发现如下报错

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1' at line 7

环境

数据库:MariaDB 10.4.12
Typecho:1.2 (18.10.23)

检查

开启 DEBUG 后,var_dump 后发现

object(Typecho_Config)#3 (1) { ["_currentConfig":"Typecho_Config":private]=> array(6) { ["host"]=> string(7) "mariadb" ["user"]=> string(7) "typecho" ["password"]=> string(10) "Password" ["charset"]=> string(7) "utf8mb4" ["port"]=> string(4) "33060" ["database"]=> string(7) "typecho_test" } } 

其中并没有 engine 字段,因此报错

Plugin.php多了一行

    Typecho_Plugin::factory('Widget_Abstract_Comments')->contentEx = array('ShortLinks_Plugin', 'replace');

另外我机器上测试,依旧会报错呀。
replace方法里面

@preg_match_all('/<a(.*?)href="(.*?)"(.*?)>/', $text, $matches);

还是应该加上是否是array的判断。

[^1]脚注链接错误

md里面使用[^1]做脚注链接,结果点击的时候会使用go方式。

我看了下html源码显示

<a href="#fn-1" class="footnote-ref">1</a>

转换后

<a href="https://xxxx/go/I2ZuLTE" target="_blank"  class="footnote-ref">

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.