首页
微语
统计
友链
留言
memos
圈子
图床
推荐
相册
网站监控
VPS监控
Search
1
实现typecho微信时光机功能的图文教程
48,239 阅读
2
为Typecho添加webp解析
43,647 阅读
3
Memos备忘录,记录瞬间想法
28,176 阅读
4
emlog数据成功迁移到typecho
27,945 阅读
5
Jasmine - 简约、美观的博客主题
26,715 阅读
手机达人
免费资源
电脑网络
娱乐休闲
网站建设
威言威语
Typecho
Emlog
WordPress
服务器
主题
插件
排行榜    
登录
/
注册
Search
标签搜索
wordpress
发布
插件
免费
教程
typecho
EMlog
PHP
代码
CSS
华为
图片
代码修改
安装
评论
手机
诺基亚
微信
文章
智能
Chen'mo
累计撰写
1,270
篇文章
累计收到
378
条评论
首页
栏目
手机达人
免费资源
电脑网络
娱乐休闲
网站建设
威言威语
Typecho
Emlog
WordPress
服务器
主题
插件
页面
微语
统计
友链
留言
memos
推荐
相册
网站监控
VPS监控
搜索到
92
篇与
的结果
2021-03-08
SmartSpam-Typecho评论过滤插件
一款比较智能的评论过滤插件,支持各种不同的自定义模式。功能概述支持过滤评论者ip支持过滤评论者邮箱支持过滤评论者昵称支持过滤评论者地址支持过滤非中文评论支持过滤敏感词汇等等插件原作者2014年更新完2.6.0版本就再也没有更新过了。今天喜逢2021年的妇女节,特此为其更新一下版本,更新为2.7.0版本,更新内容如下:支持对游客评论进行设置修复同接口插件一起使用时存在的兼容问题。下载地址2.7.0版本下载:https://qqdie.lanzous.com/i3vAcmohsne 密码:cikr插件原作者:YoviSun:http://www.yovisun.com/archive/typecho-plugin-smartspam.html本站下载:
2021年03月08日
8,536 阅读
0 评论
0 点赞
2021-03-08
typehco 插件加上更新提醒github版本检测
直接上教程:第一步你得有个github仓库吧,在仓库右侧有个release这个就是说我们需要给作品发布一个新版本的时候,就release一个。点击 release -> Drafr a new release我们可以给我们的版本添加一些信心。Tag version这里,建议填写数字版本号,比如 1.0.0,title可以填写和tag 一样。description就写一些描述。在下面附件栏那里。如果不上传的话,github 会自动打包你 push 的最新代码,如果手动上传的话,那么最后就会显示你上传的附件。这里假设我已经 release 了一个 1.0.0 的版本。编写更新检测代码var wxfversion = "1.0.0"; function update_detec() { var container = document.getElementById("wxfans"); if (!container) { return } var ajax = new XMLHttpRequest(); container.style.display = "block"; ajax.open("get", "https://api.github.com/repos/gogobody/WxFans/releases/latest"); ajax.send(); ajax.onreadystatechange = function() { if (ajax.readyState === 4 && ajax.status === 200) { var obj = JSON.parse(ajax.responseText); var newest = obj.tag_name; if (newest > wxfversion) { container.innerHTML = "发现新主题版本:" + obj.name + '。下载地址:<a href="' + obj.zipball_url + '">点击下载</a>' + "<br>您目前的版本:" + String(wxfversion) + "。" + '<a target="_blank" href="' + obj.html_url + '">查看新版亮点</a>' } else { container.innerHTML = "您目前的版本:" + String(wxfversion) + "。" + "您目前使用的是最新版主题。" } } } }; update_detec();需要改动的有两处:var wxfversion = "1.0.0";//修改为自己的当前版本号 ajax.open("get", "https://api.github.com/repos/gogobody/WxFans/releases/latest"); // 主要修改gogobody/WxFans为你的 github用户名/你的仓库repo名字这样代码会自动去检测你的 repo 的release 的最新版本,并对 tag version 做比较。嵌入 typecho 插件首先我们要对刚刚的js进行压缩,也就是压缩成一行,不然放进插件换行会被替换为导致代码失效。js压缩的网址有很多: 比如 菜鸟js压缩工具通常一个typecho插件 plguin.php 的顶部注释说明是这样,以下为模板可以直接套用,将压缩后的 js 放入后即可。/** * 我是插件说明 * <div class="wxFansSet"><a style="width:fit-content" id="wxfans">版本检测中..</div> </div><style>.wxFansSet{margin-top: 5px;}.wxFansSet a{background: #ff5a8f;padding: 5px;color: #fff;}</style> * <script>在这里插入压缩后的代码</script> * @package 我是插件名字 * @author <a href="https://www.ijkxs.com">即刻学术<br> gogobody</a> * @version 1.0.0 * @link https://www.ijkxs.com */这样就完成了一个在插件页检测 github 更新的功能。typecho 插件里获取插件版本号/** * 我是插件说明 * @package 我是插件名字 * @author <a href="https://www.ijkxs.com">即刻学术<br> gogobody</a> * @version 1.0.0 * @link https://www.ijkxs.com */ 在typecho 插件头部说明注释中声明了 version 之后,在插件内部如何获取这个 version 呢?可以通过以下代码获取:public static function get_plugins_info(){ $plugin_name = 'WxFans'; //改成你的插件名 Typecho_Widget::widget('Widget_Plugins_List@activated', 'activated=1')->to($activatedPlugins); $activatedPlugins = json_decode(json_encode($activatedPlugins),true); $plugins_list = $activatedPlugins['stack']; $plugins_info = array(); for ($i=0;$i<count($plugins_list);$i++){ if($plugins_list[$i]['title'] == $plugin_name){ $plugins_info = $plugins_list[$i]; break; } } if(count($plugins_info)<1){ return false; }else{ return $plugins_info['version']; } }
2021年03月08日
9,281 阅读
0 评论
0 点赞
2021-03-07
typecho主题时光机微信发送系统
项目地址:https://github.com/iLay1678/wechat_for_handsome本项目需要配合handsome主题的时光机使用现在可以搭配时光机插件[post]1145[/post]环境需求PHP >= 7.1PHP cURL 扩展PHP OpenSSL 扩展PHP SimpleXML 扩展PHP fileinfo 扩展PHP PDO_MYSQL 扩展食用方法安装拷贝项目到你的服务器打开 网址/install.php 安装在公众号后台服务器配置填写服务器地址为 项目所在网址/server.php 并启用服务器配置公众号发送绑定,点击链接填写相关信息进行绑定配置完成,尽情使用吧!使用方法同handsome官方时光机发送公众号使用1.发送 绑定 进行绑定或修改绑定信息2.向时光机发送消息支持文字、图片、地理位置、链接四种消息类型。其他消息类型等后续开发,暂不支持(如果发送了,会提示不支持该类型的,如语音消息)。如果发送的是图片会自动将图片存放到typecho 的 usr/uploads/time 目录下。支持发送私密说说。只需要在发送内容前加入#即可。 举例发送:#这是私密的说说,仅发送者可见。连续发送多条信息发送【开始】,开始一轮连续发送发送【结束】,结束当前轮的发送3.发送文章输入【发文章】,开始文章发送,支持多条消息,支持多条消息图文混合输入【结束】,结束文章发送4.其他操作发送 博客收到你的博客地址的链接发送 发博客收到发博文的字的链接发送 解除绑定 或 解绑 可删除掉你的绑定信息发送 帮助 查看帮助信息5.图文教程更新日志2021.02.24修复因github改名引起的更新异常,需手动下载更新包我的微信公众号,欢迎测试。关注公众号号,点击绑定填入相关资料即可,微信mid可以随便填一个。本站备份下载:
2021年03月07日
8,240 阅读
8 评论
0 点赞
2021-03-06
Typecho博客支持emoji表情设置
[Typecho博客支持emoji表情设置]介绍大家在typecho博客写文章时,很多人都喜欢使用emoji表情(比如??这些图标)但是typecho的数据库类型默认不支持emoji编码,因为Emoji是一种在Unicode位于u1F601-u1F64F区段的字符。这个显然超过了目前常用的UTF-8字符集的编码范围u0000-uFFFF。在MySQL中,UTF-8只支持最多3个字节,而emoji是4个字节。所以如果你不修改数据库的话,typecho是无法支持Emoji表情的。当然好消息是utf8mb4其实是完全兼容utf-8,修改后,不会影响现有数据及后期的数据。要注意的是utf8mb4编码在PHP5.5以后才支持,所以请确保你的PHP版本在5.5以上,typecho程序推荐PHP5.6版本。下面开始带大家一步步的设置。数据库编码修改进入PhpMyadmin,选择对应的数据库,选择操作------排序规则------选择utf8mb4_unicode_ci并执行。utf8mb4_unicode_ci数据库表编码修改[#]选择SQL-复制下面sql语句代码-点击右下角执行。注意数据库一定要和网站的数据库对应。alter table typecho_comments convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_contents convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_fields convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_metas convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_options convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_relationships convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_users convert to character set utf8mb4 collate utf8mb4_unicode_ci;`执行sql语句如果有别的表,比如友情链接插件,它就会创建一个 links 表,这里的话也是建议一起改了。另外,如果安装时改过前缀,也只需对以上语句做相应修改。配置网站最后在网站根目录config.inc.php配置文件中找到以下代码:'host' => localhost, 'user' => 'youruser', 'password' => 'yourpassword', 'charset' => 'utf8mb4', //将utf8修改为utf8mb4`
2021年03月06日
3,494 阅读
0 评论
0 点赞
typecho--JOE新版修改记录
2021年03月05日
7,660 阅读
6 评论
9 点赞
2021-03-05
Joe主题更新太快,把修改的几个小功能记录如下,避免下次更新被覆盖。一、添加排行榜功能https://cmsblog.cn/navi.html二、添加超级时光机功能https://cmsblog.cn/1145.htmlwm_embed_post ids=1145三、添加原创、转载文章功能https://cmsblog.cn/1099.htmlwm_embed_post ids=1099四、添加打赏以及分享功能https://cmsblog.cn/1134.htmlwm_embed_post ids=1134五、添加上一篇、下一篇缩略图功能六、添加评论尾巴显示public/comment.php 里添加 <?php autvip($comments->mail);?>public/aside.php 里添加<?php autvip($item->mail);?>core/function.php 里添加如下代码:/** * 显示用户等级,按邮箱 */ function autvip($i){ $db=Typecho_Db::get(); $mail=$db->fetchAll($db->select(array('COUNT(cid)'=>'rbq'))->from('table.comments')->where('mail = ?', $i)/**->where('authorId = ?','0')**/); foreach ($mail as $sl){ $rbq=$sl['rbq'];} if($rbq<1){ echo '<span class="autlv aut-0">Lv.0</span>'; }elseif ($rbq<10 && $rbq>0) { echo '<span class="autlv aut-1">Lv.1</span>'; }elseif ($rbq<20 && $rbq>=10) { echo '<span class="autlv aut-2">Lv.2</span>'; }elseif ($rbq<40 && $rbq>=20) { echo '<span class="autlv aut-3">Lv.3</span>'; }elseif ($rbq<80 && $rbq>=40) { echo '<span class="autlv aut-4">Lv.4</span>'; }elseif ($rbq<100 && $rbq>=80) { echo '<span class="autlv aut-5">Lv.5</span>'; }elseif ($rbq>=100) { echo '<span class="autlv aut-6">Lv.6</span>'; } }CSS都在我主题的css.css里。七、添加引用文章ID输出功能。改用插件实现八、美化下载插件附件显示样式修改为自带短代码样式九、动态添加点赞功能十、不同分类,不同页面,侧边栏不同
typecho 时光机单页 typecho-whisper
2021年03月04日
18,517 阅读
58 评论
1 点赞
2021-03-04
typecho-whisper===============当时就是超级喜欢这个时光机功能,自己也是东拼西凑着用着。现在终于有大佬做出来了。完美!typecho 时光机单页@author: 即刻学术 www.ijkxs.com单页适用于任何 typecho 主题。且不会对原来的主题产生任何影响。基本信息信息形式支持:文字、图片、地理位置、链接 (未完全测试)发送模式支持:纯文字、纯图片、连续发送(混合模式)本单页可接入QQ、微信、南博app等任何支持api开发的平台。api 参考:ljyngup博客本单页使用教程下载文件。拷贝文件夹times和文件page.whisper.php到你使用的主题目录下。新建单页,模板选择 超级时光机 。在你的主题functions.php顶部写php的位置加require_once 'times/Ajax.php';搞定。相关接口(开发者可以看,新手略过)使用事项。设置唯一的 time_code。给单页下面新加字段,字段名time_code,字段值自己填,将用于后面api唯一验证。默认开启可以评论。如果想关闭,给单页加字段enable_comment,值为0。下载地址:https://m.ijkxs.com/228.htmlhttps://github.com/gogobody/typecho-whisper如果你用的是JOE5.X版本,可以用我这个写好的page.whisper.php演示:本站微语 https://cmsblog.cn/cross.html隐藏内容,请前往内页查看详情本站备份下载:
2021-03-03
给你的Typecho博客添加一个相册吧,支持任何主题
前言很早以前就想折腾一个相册页面,但是没有好看的样式就一直耽搁了。最近看到了 Time For Typecho相册模板 很nice啊不过要更换主题感觉太浪费了,后面又发现 photo page for typecho 独立页面模板支持两种样式但是他使用的是js动态输出。我就寻思自己折腾一下,就参考了两者搞了相册独立页面模板这样和博客现有主题不冲突两者兼得。声明主题样式:[](https://github.com/wclk/time)https://github.com/wclk/time参考代码:photo page for typechophp自动读取文件夹下所有图片并分页显示介绍1.支持延迟加载2.支持图片分页效果预览下载github:https://github.com/xiamuguizhi/typecho-page-photo本站:https://xiamuyourenzhang.cn/usr/uploads/2021/02/1684881163.zip使用1.下载 page-img.php 放到主题根目录就可以2.新建独立页面,选择模板 Lens风格相册3.一些设置点击添加字段,填入相对应文字或者链接!jianjiemyqqmyweibomygithub3.添加图片格式标题@时间@描述@图片地址多图以回车结束,每一行代表一张图片的信息。例如: 泉州少林寺@2021年2月 泉州@第一次到了泉州少林寺@http://127.0.0.1/tp/img/ia_100000001765.jpg picture2@2020年01月02日拍摄@测试@https://ww2.sinaimg.cn/large/006uAlqKgy1fzlbjrxju2j31400u04qz.jpg picture3@2020年01月03日拍摄@测试2@http://127.0.0.1/tp/img/ia_100000003.jpg 福州随拍@2020年02月25日 拍摄@这是小赵同学拍的照片@http://127.0.0.1/usr/uploads/2021/02/327511430.jpg 泉州南音@2020 2.26 泉州@免费听南音@https://xiamuyourenzhang.cn/usr/uploads/2021/02/3231208335.jpg 泉州开元寺@2019.8.9 泉州@香火鼎盛@https://xiamu-1251327481.cos.ap-guangzhou.myqcloud.com/img/14/2020-0218-2046-39.jpg 核心详解很简单的代码,看完你可以把相册主题改成追番列表什么的 都可以 哈哈 <?php $page=$_GET['page'];//获取当前页数 $max=999;//设置每页显示图片最大张数 $html = $this->row['text']; //获取文章内容纯文本化 $array= explode("\n",$html); //分割换行符,存入数组 $i=count($array); //获取数组 array 全部图片数量 分页使用 for ($j=$max*$page;$j<($max*$page+$max)&&$j<$i;++$j){//循环条件控制显示图片张数 $post = explode('@',$array[$j]); // 分割数组 @ 在存入数组 方便读取 //.$post[0]. 标题 .$post[1]. 时间 .$post[2]. 描述 .$post[3]. 图片地址 echo "<article class=\"thumb img-area\"> <a class=\"image my-photo\" alt=\"loading\" data-src=\"https://a-oss.zmki.cn/2020/20200212-fcf30f3d33625.gif\" href=\"".$post[3]."\" > <img class=\"zmki_px my-photo\" data-src=\"".$post[3]."\" /> </a> <h2>".$post[0]."</h2> <p><p>".$post[1]."</p><p>".$post[2]."</p></p> </article>"; } /** 照片分页 使用前请设置 $max=999; 还有 把注释去掉 页面输出照片数量 $Previous_page=$page-1; $next_page=$page+1; if ($Previous_page<0){ echo "上页"; echo "<a href=?page=$next_page>下页</a>"; } else if ($page<=$i/$max-2){ echo "<a href=?page=$Previous_page>上页</a>"; echo "<a href=?page=$next_page>下页</a>";} else{ echo " <a href=?page=$Previous_page>上页</a>"; echo "下页"; } **/ ?> 本站备份:
2021年03月03日
5,355 阅读
1 评论
1 点赞
2021-03-03
typecho 超完美上一篇下一篇文章加文章缩略图
最近被这一功能吸引了,之前的文章是泽泽社长写的,这是木灵鱼儿写的,还有小灯泡写的。先收藏,以后在学原理。[post]1127[/post]fundtions.php里添加获取文章上一篇,下一篇cid/** * 显示上一篇 * * 如果没有下一篇,返回null */ function thePrevCid($widget, $default = NULL) { $db = Typecho_Db::get(); $sql = $db->select()->from('table.contents') ->where('table.contents.created < ?', $widget->created) ->where('table.contents.status = ?', 'publish') ->where('table.contents.type = ?', $widget->type) ->where('table.contents.password IS NULL') ->order('table.contents.created', Typecho_Db::SORT_DESC) ->limit(1); $content = $db->fetchRow($sql); if ($content) { return $content["cid"]; } else { return $default; } }; /** * 获取下一篇文章mid * * 如果没有下一篇,返回null */ function theNextCid($widget, $default = NULL) { $db = Typecho_Db::get(); $sql = $db->select()->from('table.contents') ->where('table.contents.created > ?', $widget->created) ->where('table.contents.status = ?', 'publish') ->where('table.contents.type = ?', $widget->type) ->where('table.contents.password IS NULL') ->order('table.contents.created', Typecho_Db::SORT_ASC) ->limit(1); $content = $db->fetchRow($sql); if ($content) { return $content["cid"]; } else { return $default; } }; //获取文章缩略图,没有则随机 function get_ArticleThumbnail($widget){ // 当文章无图片时的随机缩略图 $rand = mt_rand(1, 45); // 随机 1-9 张缩略图 // 缩略图加速 $rand_url; if(!empty(Helper::options()->articleImgSpeed)){ $rand_url = Helper::options()->articleImgSpeed; }else { $rand_url = $widget->widget('Widget_Options')->themeUrl . '/images/articles/'; } $random = $rand_url . $rand . '.jpg'; // 随机缩略图路径 $attach = $widget->attachments(1)->attachment; $pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i'; //如果有自定义缩略图 if($widget->fields->thumb) { return $widget->fields->thumb; }else if (preg_match_all($pattern, $widget->content, $thumbUrl) && strlen($thumbUrl[1][0]) > 7) { return $thumbUrl[1][0]; } else if ($attach->isImage) { return $attach->url; } else { return $random; } };插入上下文章位置,一般位于post.php里。<?php //获取到id ?> <?php $prevId = thePrevCid($this);$nextId=theNextCid($this);?> <!-- 上一篇 --> <?php if(!empty($prevId)) : ?> <?php $this->widget('Widget_Archive@recommend'.$prevId, 'pageSize=1&type=post', 'cid='.$prevId)->to($prev);?> <a href="<?php $prev->permalink();?>"> <img src="<?php echo get_ArticleThumbnail($prev);?>" alt="<?php $prev->title();?>"> <h2 class="card-title"><?php $prev->title();?></h2> </a> <?php endif; ?> <!-- 下一篇 --> <?php if(!empty($nextId)) : ?> <?php $this->widget('Widget_Archive@recommend'.$nextId, 'pageSize=1&type=post', 'cid='.$nextId)->to($next);?> <a href="<?php $next->permalink();?>"> <img src="<?php echo get_ArticleThumbnail($next);?>" alt="<?php $next->title();?>"> <h2 class="card-title"><?php $next->title();?></h2> </a> <?php endif; ?>PHP其中$prev和$next的使用和$this是一样的,他能做到的,$prev和$next也可以做到,所以拓展性大大延伸。这里我只是提供了php,html代码自己去构建结构,前端代码不多说。
2021年03月03日
3,026 阅读
0 评论
1 点赞
2021-03-02
Album for typecho 相册插件 本地上传修复版
Album For Typecho 1.1/14.10.10@package Album@author 我本奈何 modify by 即刻学术@version 1.2 beta@link https://www.ijkxs.com安装方法上传文件夹到 plugins 目录 插件目录名称必须是 Album设置 Data 目录 可写 , 设置 Config.inc.php,Language.ini 文件可以写后台插件管理开启应用手动修改模板 在适合的地方增加 Album 地址:yourDomain/Album从 yourDomain/Album 进入安装程序前台登录 进行个性设置2021/0302即刻学术 修复数据库错误,修复本地上传。其他 OSS 未测试,也未修复。2017/03/10时隔2年多 上传到 GitHub更新 1.0/14.10.10 兼容更新 PHP7 兼容修复 前台登录下载即刻资源站下载本站下载:[attach]1137[/attach] Album-for-Typecho.zip
2021年03月02日
6,896 阅读
1 评论
0 点赞
2021-03-01
给typecho添加个打赏功能
虽然没有人给我打赏,但这功能必须要有!功能虽然没用,但看着比较爽!参考两篇文章:https://www.ijkxs.com/archives/15.htmlhttps://xiamp.net/archives/new-topic-reward-button.html一、如果你没有买插件,那以下内容基本没用。我拿过来是学习它的方法。添加打赏按扭。<?php if (isPluginEnabled('TePass')) : ?> <a class="btn btn-warning" onclick="show_reward()" href="javascript:void(0);"><?php _e("打赏"); ?></a> <?php endif; ?>isPluginEnabled是检测插件是否激活的方法,具体如下function isPluginEnabled($pluginName) { return array_key_exists($pluginName, Typecho_Plugin::export()['activated']); } 然后把调用打赏区域的代码包裹起来(主要是为了限定css生效范围)<?php if (isPluginEnabled('TePass')) : ?> <div class="entry-support"> <?php echo TePass_Plugin::getReward(); ?> </div> <?php endif; ?> 接着增加CSS样式.btn_reward { /*隐藏TePass输出的按钮*/ display: none; } .entry-support .p-list { padding: 10px 0; margin: 0 -5px; /* display: none 这是捐赠用户列表,无需要就隐藏 */ } .entry-support .p-list .clusr { /* 限制头像大小 */ width: 45px; height: 45px; margin: 5px; } 然后你就可以点击打赏按钮显示打赏区域了。二、结合自己买的TePass插件,和JOE主题,折腾一上午,也基本上弄好了。我发现原理是在点击按扭 添加 onclick="show_reward()"效果,然后加个自动隐藏和显示效果。我的JQ代码比较简单:$('.pay-author').click(function(){ $(".tepasspost").toggle(); }) </script>具体在/WEB/usr/plugins/TePass/theme/reward/need_your_reward.php里可看到打赏的实现效果在想要打赏的位置添加: <?php $all = Typecho_Plugin::export();?> <?php if (array_key_exists('TePass', $all['activated'])) : ?> <?php echo TePass_Plugin::getTePass(); ?> <?php echo TePass_Plugin::getReward(); ?> <?php endif; ?>
2021年03月01日
4,528 阅读
0 评论
13 点赞
2021-03-01
一键分享到QQ空间、QQ好友、新浪微博、微信代码
通过qq空间、qq聊天、新浪微博和微信二维码分享平台提供的接口,实现把网页中对应的图片、标题、描述的信息参数用javascript获取后传进接口中,实现一键分享。提示:使用到的接口(测试时需要登录,网址和图片必须是公网的,不能localhost,QQ图片不能太宽,太宽标题描述会undefiend):一、分享链接======1.分享到QQ空间接口:https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=你的网址&sharesource=qzone&title=你的分享标题&pics=你的分享图片&summary=你的分享描述信息2.分享给QQ好友接口http://connect.qq.com/widget/shareqq/index.html?url=你的分享网址&sharesource=qzone&title=你的分享标题&pics=你的分享图片地址&summary=你的分享描述&desc=你的分享简述3.分享到新浪微博接口:http://service.weibo.com/share/share.php?url=你的分享网址&sharesource=weibo&title=你的分享标题&pic=你的分享图片&appkey=你的key需要在新浪微博开放平台中申请二、一键分享代码参考如下:=============html(示例):<div>分享到:</div> <div onclick="shareTo('qzone')"> <img src="https://zixuephp.net/static/images/qqzoneshare.png" width="32"> <!-- 分享图片不再提供访问 --> </div> <div onclick="shareTo('qq')"> <img src="https://zixuephp.net/static/images/qqshare.png" width="32"> </div> <div onclick="shareTo('sina')"> <img src="https://zixuephp.net/static/images/sinaweiboshare.png" width="32"> </div> <div onclick="shareTo('wechat')"> <img src="https://zixuephp.net/static/images/wechatshare.png" width="32"> </div> js(示例):function shareTo(types){ var title,imageUrl,url,description,keywords; //获取文章标题 title = document.title; //获取网页中内容的第一张图片地址作为分享图 //imageUrl = document.images[0].src; imageUrl = document.getElementById("pcdetails").getElementsByTagName("img")[0]; //当内容中没有图片时,设置分享图片为网站logo if(typeof imageUrl == 'undefined'){ imageUrl = 'https://'+window.location.host+'/static/images/logo.png'; } else { imageUrl = imageUrl.src; } //获取当前网页url url = document.location.href; //获取网页描述 description = document.querySelector('meta[name="description"]').getAttribute('content'); //获取网页关键字 keywords = document.querySelector('meta[name="keywords"]').getAttribute('content'); //qq空间接口的传参 if(types=='qzone'){ window.open('https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url='+url+'&sharesource=qzone&title='+title+'&pics='+imageUrl+'&summary='+description); } //新浪微博接口的传参 if(types=='sina'){ window.open('http://service.weibo.com/share/share.php?url='+url+'&sharesource=weibo&title='+title+'&pic='+imageUrl+'&appkey=2706825840'); } //qq好友接口的传参 if(types == 'qq'){ window.open('http://connect.qq.com/widget/shareqq/index.html?url='+url+'&sharesource=qzone&title='+title+'&pics='+imageUrl+'&summary='+description+'&desc='+keywords); } //生成二维码给微信扫描分享 if(types == 'wechat'){ //在线二维码(服务器性能限制,仅测试使用,屏蔽非大陆ip访问) window.open('https://zixuephp.net/inc/qrcode_img.php?url='+url); } } 使用说明:纯js使用时id改成自己站点的id选择器来获取。如果调试不成功,可以尝试本站中的分享功能,分享时会打开新窗口,那条链接是最终要分享的,已经拼接好的参数链接,可以复制进行比对参考。分享效果点击本站文章分享功能,效果图如下:结合一下我自己扒的,就是图片没有显示出来。有可能是文章图片没有加class,获取不到图片。
2021年03月01日
8,126 阅读
4 评论
1 点赞
2021-02-27
Typecho上下篇文章代码输出文章缩略图
本篇文章虽说是教大家如何调用上下篇文章缩略图的,但是实则是探讨一种船新的函数写法。在正式教程开始之前,首先我们需要先写个缩列图函数,如下:function showThumbnail($widget) { $mr = '默认图片地址'; $attach = $widget->attachments(1)->attachment; $pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i'; if (preg_match_all($pattern, $widget->content, $thumbUrl)) { echo $thumbUrl[1][0]; } elseif ($attach->isImage) { echo $attach->url; } else { echo $mr; } }函数调用方法也很简单,一般如<?php showThumbnail($this); ?>,参数是$this,问题的关键点就是如何找到上下篇文章的$this,几年前的给别人弄的时候选择了一种比较繁琐的方式,就是先查到上下篇文章的cid,然后根据《Typecho根据文章cid获取文章信息》提到的方式,调用出对应的$this,这种方式缺点就是代码多了一些数据查询也多了两次。2021年开年之际,我又投入时间研究了这个问题,经过大量失败后所幸还是研究出成果了。原理就是自己写两个函数用来输出上下篇文章,关键点也是在$this参数上,折腾了好久,具体代码如下。首先是函数部分//下一篇 function theNext($widget) { $t = Typecho_Widget::widget('Widget_Archive@1');//@的作用我之前也有讲过,就是用来区分的,这里的$t就是定义的$this $db = Typecho_Db::get(); $sql = $db->select()->from('table.contents') ->where('table.contents.created > ?', $widget->created) ->where('table.contents.status = ?', 'publish') ->where('table.contents.created <= ?', time()) ->where('table.contents.type = ?', $widget->type) ->where('table.contents.password IS NULL') ->order('table.contents.created', Typecho_Db::SORT_ASC) ->limit(1);//sql查询下一篇文章 $db->fetchAll($sql, array($t, 'push'));//这个代码就是如何将查询结果封到$this里的 return $t;//返回变量 } //上一篇 function thePrev($widget) { $t = Typecho_Widget::widget('Widget_Archive@2');//@的作用我之前也有讲过,就是用来区分的,@后面参数随便只要和上边的不一样就行 $db = Typecho_Db::get(); $sql = $db->select()->from('table.contents') ->where('table.contents.created < ?', $widget->created) ->where('table.contents.status = ?', 'publish') ->where('table.contents.created <= ?', time()) ->where('table.contents.type = ?', $widget->type) ->where('table.contents.password IS NULL') ->order('table.contents.created', Typecho_Db::SORT_DESC) ->limit(1);//sql查询上一篇文章 $db->fetchAll($sql, array($t, 'push')); return $t;//返回变量 }调用部分一般在post.php或者page.php中使用隐藏内容,请前往内页查看详情
2021年02月27日
8,416 阅读
33 评论
1 点赞
2021-02-25
Typecho头图美化插件 ThumbOptimizer
Typecho头图美化插件 ThumbOptimizer 是一款头图美化插件。对于资源型博客能很好的统一头图样式。预览使用教程启用插件,选择需要的头图生成模式,有缩放和裁剪两种。填写一个用于附件上传的用户信息。可以填自己的可以重新注册一个,但要有编辑者以上权限。选择你的主题缩略图字段,或者自定义缩略图字段(未测试,说明:前提是你的主题存在这个字段)。发布文章后会自动采集内容第一张图,制作头图填入上述字段。你也可以在文章的附加找到生成的缩略图。缺点头图限定固定大小 300x200只支持固定几种模板插件目前只能全局启用,不能细化到每一篇文章是否启用。todo细化插件,用户决定文章是否制作头图。注意购买的用户请勿随意传播此插件,如有发现,将永久拉黑用户,并且不再维护插件。谢谢合作。购买地址:https://www.ijkxs.com/archives/185.html
2021年02月25日
6,494 阅读
0 评论
1 点赞
2021-02-23
Typecho侧边栏最新评论实现显示评论于文章功能
Typecho侧边栏最新评论实现显示评论于文章功能实现其实观察comments表就发现该表有cid字段,就是评论所属文章,那侧边栏评论的Widget_Comments_Recent可以直接调用cidecho $comments->cid; // 文章cid 那就好说了,直接一个SQL语句查询就行了。以下代码放到functions.php就能用public function getParent($cid) { $select = $this->db->select()->from('table.contents')->where('table.contents.cid = ?', $cid)->limit(1); $result = $this->db->fetchAll($select); if (isset($result[0])) { return Typecho_Config::factory($result[0]); } return Typecho_Config::factory(array()); } 使用方式也很简单getParent($comments->cid)->title();
2021年02月23日
2,248 阅读
0 评论
0 点赞
2021-02-22
Typecho 主题内置 Sitemap(站点地图)
Typecho 主题内置 Sitemap(站点地图)插入路由同样是利用themeInit函数function themeInit($archive) { if ($self->request->getRequestUri() == "/sitemap.html" || $self->request->getRequestUri() == "/index.php/sitemap.html") { $self->setThemeFile("sitemap.php"); $self->response->setStatus(200); } } sitemap模板保存在主题目录即可<?php if (!defined('__TYPECHO_ROOT_DIR__')) { exit; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="https://www.w3.org/1999/xhtml/"> <head profile="https://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="text/html; charset=<?php $this->options->charset();?>" /> <title>站点地图 - <?php $this->options->title()?></title> <meta name="keywords" content="站点地图,sitemap,<?php $this->options->title()?>" /> <meta name="copyright" content="<?php $this->options->title()?>" /> <link rel="canonical" href="<?php $this->permalink()?>" /> <style type="text/css"> body {font-family: Microsoft Yahei,Verdana;font-size:13px;margin:0 auto;color: #000000;background: #ffffff;width: 990px;margin: 0 auto} a:link,a:visited {color:#000;text-decoration:none;} a:hover {color:#08d;text-decoration:none;} h1,h2,h3,h4,h5,h6 {font-weight:normal;} img {border:0;} li {margin-top: 8px;} .page {padding: 4px; border-top: 1px #EEEEEE solid} .author {background-color:#EEEEFF; padding: 6px; border-top: 1px #ddddee solid} #nav, #content, #footer {padding: 8px; border: 1px solid #EEEEEE; clear: both; width: 95%; margin: auto; margin-top: 10px;} </style> </head> <body vlink="#333333" link="#333333"> <h2 style="text-align: center; margin-top: 20px"><?php $this->options->title()?>'s SiteMap </h2> <center></center> <div id="nav"><a href="<?php $this->options->siteUrl();?>"><strong><?php $this->options->title()?></strong></a> » <a href="<?php $this->permalink()?>">站点地图</a></div> <div id="content"> <h3>最新文章</h3> <ul> <?php $output = ''; $stat = Typecho_Widget::widget('Widget_Stat'); $this->widget('Widget_Contents_Post_Recent', 'pageSize=' . $stat->publishedPostsNum)->to($archives); $year = 0; $mon = 0; $i = 0; $j = 0; while ($archives->next()) { $year_tmp = date('Y', $archives->created); $mon_tmp = date('m', $archives->created); $y = $year; $m = $mon; if ($year > $year_tmp || $mon > $mon_tmp) { $output .= '</ul>'; } $output .= '<li><a href="' . $archives->permalink . '">' . $archives->title . '</a></li>'; } $output .= '</ul>'; echo $output; ?> </ul> </div> <div id="content"> <h3>独立页面</h3> <ul class="clearfix" id="nav_menu"> <li><a href="<?php $this->options->siteUrl();?>">Home</a></li> <?php $this->widget('Widget_Contents_Page_List') ->parse('<li><a href="{permalink}">{title}</a></li>');?> </ul> </div> <div id="content"> <h3>分类目录<h3> <ul><?php $this->widget('Widget_Metas_Category_List') ->parse('<li><a href="{permalink}">{name}</a> ({count})</li>');?> </ul> </div> <div id="content"> <h3>标签云<h3> <ul><?php $this->widget('Widget_Metas_Tag_Cloud') ->parse('<li><a href="{permalink}">{name}</a> ({count})</li>');?> </ul> </div> <div id="footer">查看博客首页: <strong><a href="<?php $this->options->siteUrl();?>"><?php $this->options->title()?></a></strong></div><br /> <center> <div style="text-algin: center; font-size: 11px"><br /> © <?php echo date('Y'); ?> 无插件 Sitemap By <strong><a href="https://doufu.ru" target="_blank">Ryan</a></strong> 版权所有<br /><br /><br /> </div> </center> </body> </html>本站演示地址:https://cmsblog.cn/sitemap.xml(JOE主题的地址有点不一样而已)
2021年02月22日
2,671 阅读
0 评论
0 点赞
2021-02-22
Typecho 主题点赞功能实现
有人问到点赞功能,这里抽取代码分享一下,因为去掉了部分敏感信息,可能需要调试一下。我的设计思路是使用自定义字段来存储点赞次数。和市面上的方案不一样,不过大同小异。增加接口首先要修改functions.php的themeInit函数,加入点赞接口function themeInit($archive) { if ($archive->is('single')) { if ($archive->request->isPost()) { if ($archive->request->is('themeAction=promo')) { promo($archive); } } } } 接着要加入点赞核心函数,下面的函数可以扩展/** * Post Action AJAX接口 * * @param Widget_Archive $widget * @return void * @date 2020-05-04 */ function promo($widget) { $user = $widget->widget('Widget_User'); $db = Typecho_Db::get(); $fields = unserialize($widget->fields); $allowOperates = array('get', 'set', 'inc', 'dec'); // 这里可以扩展操作,建议屏蔽get/set $allowFields = array('likes'); // 这里可以扩展修改字段 // 获取操作 $operate = $widget->request->get('operate'); $field = $widget->request->get('field'); $value = $widget->request->filter('int')->get('value'); $value = $value === null ? 100 : $value; // 100 起步 $result = array('cid' => $widget->cid); if ($operate === "get") { $result['operate'] = 'get'; if (array_key_exists($field, $fields)) { $result[$field] = $fields[$field]; } else { $result[$field] = -1; } $widget->response->throwJson(array('status' => 1, 'msg' => _t('已获取参数'), 'result' => json_encode($result))); } elseif ($operate === "set") { $result['operate'] = 'set'; if ($value > 0) { $widget->setField($field, 'str', $value, $widget->cid); } else { $db->query($db->delete('table.fields') ->where('cid = ? AND name = ?', $widget->cid, $field)); } $widget->response->throwJson(array('status' => 1, 'msg' => _t('已完成操作'), 'result' => json_encode($result))); } elseif ($operate === "inc") { $result['operate'] = 'inc'; $value = intval($fields[$field]) + 1; $widget->setField($field, 'str', $value, $widget->cid); $result[$field] = $value; $widget->response->throwJson(array('status' => 1, 'msg' => _t('已完成操作'), 'result' => json_encode($result))); } elseif ($operate === "dec") { $result['operate'] = 'dec'; $value = intval($fields[$field]) - 1; $result[$field] = $value; if ($value > 0) { $widget->setField($field, 'str', $value, $widget->cid); } else { $db->query($db->delete('table.fields') ->where('cid = ? AND name = ?', $widget->cid, $field)); } $widget->response->throwJson(array('status' => 1, 'msg' => _t('已完成操作'), 'result' => json_encode($result))); } } Post 请求参数说明operate:操作 field: 操作字段 value:操作值,inc/dec 操作用不到 前端方面这里我给出我的参考 js 代码,实际建议自己写一下,使用 jq 也不复杂。function likesCallback(count) { $("#likesPostCount").value(count); } $("#likesPost").click(function () { posturl = $(location).attr("href").split("?")[0] + "?themeAction=promo"; $.ajax({ url: posturl, type: "POST", data: { operate: "inc", field: "likes" }, dataType: "json", success: function (result) { if (1 == result.status) { result = JSON.parse(result.result) likes = undefined === result.likes ? -1 : result.likes; likesCallback(result.likes); } else { // 提醒错误消息 alert( undefined === result.msg ? '点赞失败' : result.msg ); } }, error: function (xhr, ajaxOptions, thrownError) { alert('点赞失败' + ajaxOptions); }, }); }); 输出因为使用自定义字段存储,所以输出和普通自定义字段一样<?php echo $this->fields->likes; ?>
2021年02月22日
5,960 阅读
0 评论
7 点赞
2021-02-22
Typecho 免插件统计浏览次数,输出热门文章
由于需要Join,不推荐数据量大的博客使用自定义字段存储浏览次数前提好几年前我在打造SimpX主题的时候撸了下面的浏览次数统计代码。/* * 获取浏览次数(改进版) */ function getViewsStr($widget, $format = "{views} 次浏览") { $fields = unserialize($widget->fields); if (array_key_exists('views', $fields)) $views = (!empty($fields['views'])) ? intval($fields['views']) : 0; else $views = 0; //增加浏览次数 if ($widget->is('single')) { $vieweds = Typecho_Cookie::get('contents_viewed'); if (empty($vieweds)) $vieweds = array(); else $vieweds = explode(',', $vieweds); if (!in_array($widget->cid, $vieweds)) { $views = $views + 1; $widget->setField('views', 'str', strval($views), $widget->cid); $vieweds[] = $widget->cid; $vieweds = implode(',', $vieweds); Typecho_Cookie::set("contents_viewed",$vieweds); } } return str_replace("{views}", $views, $format); } 需求这次在整poRebuild主题的时候发现原来的调用方式不太合适我这次的输出需求,改造成在themeInit函数里自动增加浏览次数,无论页面是否展示都能自动统计。当然了,还是利用自定义字段,不动数据库结构。同时我新弄的主题还需要热门文章输出的功能,一并把代码撸了。代码浏览次数查询先给出查询浏览次数的代码,为了方便拓展(比如输出点赞次数),自定义字段都是可变参数,同时支持控制直接输出或者返回。function views($widget, $format0 = "%d", $format1 = "%d", $formats = "%d", $return = false, $field = 'views') { $fields = unserialize($widget->fields); if (array_key_exists($field, $fields)) { $fieldValue = (!empty($fields[$field])) ? intval($fields[$field]) : 0; } else { $fieldValue = 0; } if ($fieldValue == 0) { $fieldValue = sprintf($format0, $fieldValue); } else if ($fieldValue == 1) { $fieldValue = sprintf($format1, $fieldValue); } else { $fieldValue = sprintf($formats, $fieldValue); } if ($return) { return $fieldValue; } else { echo $fieldValue; } } 在展示的地方调用<?php views($this); ?> 浏览次数统计/** * 增加浏览次数 * 使用方法: 在<code>themeInit</code>函数中添加代码 * <pre>if($archive->is('single') || $archive->is('page')){ viewsCounter($archive);}</pre> * * @param Widget_Archive $widget * @return boolean */ function viewsCounter($widget, $field = 'views') { if (!$widget instanceof Widget_Archive) { return false; } $fieldValue = views($widget, "%d", "%d", "%d", true, $field); $fieldRecords = Typecho_Cookie::get('__typecho_' . $field); if (empty($fieldRecords)) { $fieldRecords = array(); } else { $fieldRecords = explode(',', $fieldRecords); } if (!in_array($widget->cid, $fieldRecords)) { $fieldValue = $fieldValue + 1; $widget->setField($field, 'str', strval($fieldValue), $widget->cid); $fieldRecords[] = $widget->cid; $fieldRecords = implode(',', $fieldRecords); Typecho_Cookie::set('__typecho_' . $field, $fieldRecords); return true; } return false; } 调用方式,需要在主题themeInit函数中调用funciton themeInit() { if($archive->is('single') || $archive->is('page')){ viewsCounter($archive);} } 输出热门文章/** * 获取热门文章 * * @access public * @param int $pageSize 限制热门文章输出数量 * @param int $fieldName 排序关键自定义字段 * @since 1.0 * @return Widget_Archive */ function hotspots($pageSize = -1, $fieldName = "views") { //2020.04.22默认遵循默认 pageSize $pageSize = $pageSize === -1 ? Helper::options()->postsListSize : $pageSize; $db = Typecho_Db::get(); // 2020.04.19 修复排列顺序不正常 1 10 100 2 20 3 4 5 $tableFields = $db->getPrefix() . 'fields'; $tableContents = $db->getPrefix() . 'contents'; // 2020.04.27 修复 Pdo_MySQL 不能用 $castType = ($db->getAdapterName() === "MySQL" || $db->getAdapterName() === "Pdo_Mysql") ? "UNSIGNED" : "INT"; $sql = "SELECT *,CAST(${tableFields}.str_value as ${castType}) order1 FROM ${tableFields},${tableContents} WHERE ${tableFields}.cid = ${tableContents}.cid AND ${tableFields}.name = '${fieldName}' AND ${tableContents}.type = 'post' AND ${tableContents}.status = 'publish' AND ${tableContents}.created < " . time() . " ORDER BY order1 DESC LIMIT $pageSize"; $result = $db->fetchAll($sql); // 2020.08.11 修复没有浏览记录时空白 if (count($result) < $pageSize) { $select = $db->select()->from('table.contents')->where('table.contents.status = ? AND table.contents.created < ? AND table.contents.type = ?', 'publish', time(), 'post'); foreach ($result as $row) { $select = $select->where('table.contents.cid <> ?', $row['cid']); } $select->order('table.contents.created', Typecho_Db::SORT_DESC)->limit($pageSize - count($result)); $_result = $db->fetchAll($select); foreach ($_result as $row) { $result[] = $row; } } // 2020.04.27 修复作者页报错 $archive = Typecho_Widget::widget('Widget_Archive@hotposts-' . $pageSize, 'type=index'); // 2020.07.04 临时修复没有views字段引起的死循环 if (count($result)) { $archive->row = []; $archive->stack = []; $archive->length = 0; foreach ($result as $hotpost) { $archive->push($hotpost); } $archive->setTotal(count($result)); } return $archive; } 直接调用和主题调用文章列表是一样的<?php $widget = hotspots(); ?> <?php while($widget->next()): ?> <?php $widget->title(); ?> <?php endwhile;?> 最后当然,别忘了你的主题或者插件新增了 views 字段,删掉ALTER TABLE `typecho_contents` DROP `views`;
2021年02月22日
3,645 阅读
0 评论
3 点赞
2021-02-21
JOE添加原创以及转载来源
我一向收集的文章比较多,一直也不敢多转载,就是因为不好添加转载来源声明!但也有些自己写的文章,加个原创图标以示区别。 利用typecho的自定义字段来实现此功能,以JOE主题为例,记录如下。效果如图:一、core/core.php 添加如下代码: $Copyrightnew = new Typecho_Widget_Helper_Form_Element_Radio('Copyrightnew', array('0' => _t('原创版权'), '1' => _t('投稿版权'), '2' => _t('转载文章')), '1', _t('投稿版权'), _t('版权类型默认:投稿版权,文章版权类型,可以在主题设置里面新增和编辑版权类型,')); $layout->addItem($Copyrightnew); $url = new Typecho_Widget_Helper_Form_Element_Text('url', NULL, NULL, _t('转载文章来源'), _t('在这里填入一个文章 URL 地址,留空则没有')); $zzz = new Typecho_Widget_Helper_Form_Element_Text('zzz', NULL, NULL, _t('作者名'), _t('原作者')); $url->input->setAttribute('class', 'w-100 setfb'); $layout->addItem($url); $layout->addItem($zzz);二、public/copyright.php里修改为如下代码:<?php if($this->fields->zzz != ''){ echo '<span>转载于: </span><p>'.$this->fields->zzz.'</p>'; }else{ echo '<span>发表者:</span><p>'; $this->author(); echo'</p>'; } ?> <?php if($this->fields->url != ''){ echo '<span>来源网址: </span><p>'.$this->fields->url.'</p>'; }else{ echo '<span>本文链接:</span><p>'.$this->permalink.'(非特殊说明,文章均收集于互网联!)</p>'; } ?> 三、post.php里添加:<?php if ($this->fields->Copyrightnew =='0'):?><div class="originalImg"></div><?php endif; ?>放到 <div class="joe_main joe_post"> 后面。四、添加CSS.originalImg { background: url(assets/img/original.png); background-position: 0 0; background-size: 64px; width: 64px; height: 64px; float:right; right: 0; top: 0;}图片自取。
2021年02月21日
6,089 阅读
13 评论
4 点赞
2021-02-19
Typecho 随机文章(日志)
Typecho 随机文章调用代码,使用这个代码省的用插件了。博主作为一个有洁癖的人,做模板能不用插件就尽量不用。此代码加在functions.phpfunction theme_random_posts(){ $defaults = array( 'number' => 5, 'before' => '<ul class="list">', 'after' => '</ul>', 'xformat' => '<li><a href="{permalink}" title="{title}">{title}</a></li>' ); $db = Typecho_Db::get(); $sql = $db->select()->from('table.contents') ->where('status = ?','publish') ->where('type = ?', 'post') ->where('created <= unix_timestamp(now())', 'post') //添加这一句避免未达到时间的文章提前曝光 ->limit($defaults['number']) ->order('RAND()'); $result = $db->fetchAll($sql); echo $defaults['before']; foreach($result as $val){ $val = Typecho_Widget::widget('Widget_Abstract_Contents')->filter($val); echo str_replace(array('{permalink}', '{title}'),array($val['permalink'], $val['title']), $defaults['xformat']); } echo $defaults['after']; } 调用代码:<?php theme_random_posts();?>
2021年02月19日
3,683 阅读
0 评论
0 点赞
2021-02-17
UpyunFile-Typecho又拍云插件
插件简介:本插件基于 codesee/UpyunFile 二次开发,解决了原作的一些 bug,并加入了新功能。插件功能:上传、修改和删除功能静态资源接入又拍云 CDN一键替换当前博客中所有图片的 URL 为 CDN 加速链接接入又拍云图片处理为博客静态资源加入 Token 防盗链相比于原插件:修复了启用本插件会影响其他替换内容插件生效的 Bug修复了某些情况下图片链接替换失败的 Bug新增:接入又拍云图片处理功能新增:为博客静态资源加入 Token 防盗链[alt type="info"]又拍云 SDK 仅支持 PHP >= 5.6 的环境[/alt]使用方法:下载此插件的最新版,上传至网站的/usr/plugins/目录下;启用该插件,正确填写相关信息,保存即可。详细使用以及其他技巧见此文:https://blog.sspirits.top/archives/new-version-of-UpyunFile-plugin-use-tutorial注意事项启用又拍云图片处理需在又拍云控制台中创建缩略图版本并填入插件相应位置,文档:https://help.upyun.com/knowledge-base/image/#thumb如你创建的缩略图版本开启了转码功能,则需将输出格式填入插件相应位置只有 JPG、JPEG、PNG、BMP 这 4 种格式的图片才会进行处理启用 Token 防盗链需在又拍云控制台中启用 Token 防盗链并将密钥填入插件相应位置自定义目录结构可以在 Typecho 根目录下的 config.inc.php 中添加代码 define('__TYPECHO_UPLOAD_DIR__', '/path/to/uploads'); 并设置目录结构为 Typecho结构。[alt type="warning"]Token 防盗链功能只能修改 HTML 代码中的 CDN 链接,如果需要引入字体图片等资源请内联 CSS[/alt]下载插件https://github.com/ShadowySpirits/UpyunFile最新版1.0.4插件作者https://github.com/ShadowySpirits作者博客:https://blog.sspirits.top/
2021年02月17日
6,644 阅读
0 评论
0 点赞
1
...
3
4
5