Typecho杂文:Typecho探索性质的文章

Shamiko二次元自适应Typecho主题

Shamiko以《街角魔族》为主题制作的typecho二次元自适应主题模板,萌!用了3天时间搞的,感觉还不错哈!项目地址https://github.com/jrotty/Shamiko介绍侧栏导航有点MD风 支持多端自适应模板设置处可设置邮箱头像镜像源文章列表ajax加载评论列表继承typecho默认结构,头像默认为50px,时间格式为Y-m-d没有代码高亮,如果有需求可以自行安装代码高亮插件萌化:用《街角魔族》夏美子和桃子的图片素材进行了萌化;默认头像logo,背景图,返回顶部按钮,侧栏头图,侧栏底图,文章右下角底图,搜索栏也有图... 全站还有动漫官网的那个漂雪效果,抄用官网素材主题中的高清图片素材可以自取https://www.bilibili.com/read/cv3529106首页文章页面侧栏搜索[btn url="https://github.com/jrotty/Shamiko"]下载主题[/bt...

阅读文章
Typecho安卓客户端Nabo

前言了解 Typecho 博客的大多都知道 WordPress 的安卓客户端 Typecho 也能用,因为都是基于 XMLRPC ,但是真的不好用,不过所幸有位大佬基于 XMLRPC 接口开发了 typecho 的安卓客户端。Nabo of typecho android客户端名字为Nabo无需插件,仅需博客开启 XMLRPC。编辑器仅支持 markdown需要账号和密码和 XMLRPC 地址 一般 xmlrpc 地址为: https://example.com/action/xmlrpc ,有些未开启伪静态的可能需要加上 index.php目前为版本1.0,支持撰写文章,编辑文章,查看文章,删除文章,Rss阅读,评论处理,评论回复,数据统计,评论查看Nabo 官网:http://nabo.krait.cn/开发者:权那他疑问?欢迎加入QQ群:452935991这个android项目不开源,权那他保证绝不会私自盗取账号密码它仅许可 Typecho 博客使用, 虽然它利用 XMLRPC 协议编写,wp 这些都可以,但作者做了逻辑识别,非 typecho 博客无法使用。效...

阅读文章
Violet一款紫色的Typecho自适应主题

Violet紫罗兰,隐在茂盛的花草中,永远也不张扬,不在乎有多少欣赏的目光,不在乎自己是否绽放多美的花蕾。但却吮足天地精华,悄悄释放着淡淡的幽香。马克吐温说:“ 紫罗兰把它的香气留在那踩扁了它的脚裸上,这就是宽容 ”模板特性0,响应式设计,多端自适应显示1,模板后台可控制页面配色风格,布局风格等(未来实现)2,文章支持代码高亮,回复可见3,评论集成评论过滤功能,支持评论表情,评论头像显示QQ头像但不会暴露qq号,且评论支持ajax,支持禁止游客评论4,广告位设置,方便插入谷歌/百度广告代码5,自定义文章描述与关键字(实测确实能优化收录,前提是自己关键词写的好)6,友链页面布局优化,直接使用友链插件填写友链信息即可7,模板设置界面简洁,内含帮助文档8,前台登录功能9,文章列表图片,友链头像,评论头像支持懒加载功能10,支持fancybox的图片灯箱效果等等网站演示:本站就是!布局展示图其他页面展示图购买模板模板售价:66.66元权利:您可以获得本款主题的最新版,并将获得后续更新支持。注意事项:购买主题后,您将获得主题源代码,主题不加密,不绑定域名,购买后可随意使用,但不得分发、转售。因主题是可复制的商品,在代码发出后不予退款,敬请谅解。售后支持主题免费升级,但不提供免费的个性化定制服务。什么是分发?指以不盈利的方式赠与他人,或在网络等其他渠道派发的行为!什么是转售?指以盈利为目的将模板低价或者高价卖出的行为!每份主题我都会加入一些特定标识,这样一旦出现分发转售的行为,能快速定位用户,并取消该用户的售后服务。购买方式:扫码付款后,将订单账号以邮件方式发送到邮箱bssf@qq.com,并说明购买Violet主题即可,或直接联系下方联系QQ。人工购买方式↓↓↓QQ:485868654 或 点击直接 QQ 咨询支付宝:bssf@qq.com00:00更新日志20191002发布1.4.0版本1,支持使用自定义字段设置文章封面图2,引入视频播放模板,可设置单集/多集,详见帮助文档3,翻页按钮增加页码形式的4,文章页面显示文章作者信息5,加入用户主页模板6,文章支持插入表情20190917发布1.3.0版本1,支持禁止游客评论2,侧栏导航支持水平布局3,支持自定义文章列表列数4,新的默认logo上线5,页面支持盒子布局6,侧栏导航背景色新增明亮模式和暗色模式7,fancybox图片灯箱支持显示图标标题(alt信息)8,评论加入身份标识(作者、用户、游客)9,支持为文章缩略图设置后缀,方便云存储添加规则10,登陆界面加入注册按钮(当程序允许注册时显示),同时修复登陆界面logo未关联设置问题20190901发布1.2.0版本1,评论列表显示评论时间以及评论设备信息2,评论列表加载更多功能加入ajax判断,按需加载,节省资源并提高速度3,修复chrome76的ajax评论时重复显示bug4,后台地址链接优化,增强兼容性5,文章置顶样式优化,置顶功能需要安装置顶插件6,文章排版样式优化7,评论列表移动端样式优化8,评论表情样式优化,bug修复9,修复平板模式搜索框不显示问题10,新增设置页面与callback.php页面11,图片灯箱功能加入12,对typecho评论存在的xss问题进行拦截,提高安全性13,美化加密文章表单样式14,评论数显示位置调整,样式优化。15,修复回复可见文章,文章作者也需要回复才能查看的问题16,文章列表缩列图长宽比锁定3:217,修复火狐浏览器控制台警告18,模板设置处添加logo设置19,移动端端加入搜索功能20,模板设置界面优化20190812发布1.1.0版本1,评论列表加入艾特显示功能2,修复评论过滤大部分功能无效问题3,评论提交支持ajax4,文章页面显示分类,标签样式微改动5,删除残余无用php判断6,独立页面ceshi模板删除5,删除残余无用php判断7,删除部分无用css,js文件,减小模板体积20190803发布1.0.5版本1,修正页码边距,使其显示更加美观2,修正css导致的谷歌广告显示留白问题3,加入前台登录功能4,文章列表图片懒加载功能加入5,右侧栏相关文章显示优化,当找不到相关文章时显示随机文章6,修正自定义描述功能的部分情况下显示NULL的问题7,模板设置界面样式等微调20190731发布1.0.0...

阅读文章
Typecho权限管理插件 - 权限狗

前言Typecho是一款博客程序,也是支持多用户的,也有很多人折腾过多用户,但是首先遇到的问题就是,新注册的用户,用户组无权发布文章,提升到贡献者的话文章还需要审核才能发布,提升到编辑的话权限有过大了,所以大多数人的解决方案就是改动源代码,让注册用户默认用户组为贡献者,同时将贡献者改成文章无需审核。权限狗权限狗插件1,支持注册时直接设置账号密码2,注册成功后跳转地址可自定义3,注册用户默认用户组可自由设置4,支持贡献者发布文章自动审核5,支持模板开发者设置前台注册后的跳转地址,设置前台文章发布后的跳转地址插件自由付费该插件采用自由付费模式,你觉得它值多少钱就扫码付款给我多少钱!如果觉得一文不值,你也可以直接白嫖!插件下载地址https://github.com/jrotty/Rdog插件安装说明下载压缩包,解压后将文件名重命名为Rdog,上传至插件目录,然后登陆程序后台启用插件设置插件即可!也可以配合邮箱验证插件一起使用https://github.com/Archeb/MailValidate避免一次性会员更新记录2019.07.30更新1.2.0版本1,将定制版与非定制版rdog进行统一,规范写法2,支持模板开发者设置前台注册后的跳转地址,设置前台文章发布后的跳转地址2019.06.14更新1.1.6版本支持前台注册直接设置密码,同时贡献者发布文章自动审核的代码完全重写,改为另一种方式。2019.06.01删除一处手残代码,修复注册时报错问...

阅读文章
Typecho仿旧版A站程序源码下载

前言18年国庆期间,无意间发现个DZ仿A站的源码(旧版A站),于是闲着也是无聊,就想着给typecho也套上个,于是这个东西诞生啦,然而我后来就不想搞了...然后今天就放出来让大家happy下吧!展示图首页分类页面个人中心介绍功能:支持前台注册,前台登录,前台发布文章,前台管理文章,支持发布视频(视频直连或引用),支持发布文章。其他:整站源码源码我都会放在下面,包括数据库源码,typecho源码应该没怎么改动,带数据给出源码是因为模板有一些设定,比如视频文章的字段格式什么的,我不想细说,自行体会吧!注:此源码不适合新手,还有很多很多体验上的东西需要优化!管理员用户名和密码我不想说,你可以弄好后注册个账号,然后通过数据库将新建的账号权限提升为管理员即可!下载地址回复可见...

阅读文章
Typecho - QingYi - 简洁的自适应主题

介绍QingYi,基于Flat UI免费版进行深度定制,融合了部分flarum的风格;行动端庄大方,性情温柔活泼,便于调教。这是Typecho为数不多的一款支持多用户的模板,当然你不开启注册功能只是当个人博客模板使用也完全没有问题!展示图首页分类页文章页面独立页面个人资料修改页自适应功能与特性功能介绍自适应响应式设计适配各种大小尺寸屏幕夜间模式pm10点到am6点之间会自动进入夜间模式,同时前台也有夜间模式开关方便用户切换文章目录树文章目录树功能,阅读文章不费力图片惰性加载只加载用户能看到的图片,提高网页加载效率嵌套注册支持前台注册账号登录功能支持前台ajax登录账号轻量级用户中心支持修改个人资料,查看自己文章,后续可能加入管理文章编辑文章等等gravatar评论头像支持选择多种镜像地址QQ评论头像使用qq邮箱进行评论时显示qq头像,且链接不暴露qq号置顶功能置顶功能需配合Sticky文章置顶插件使用,样式已经写好了,直接在插件里输入置顶文章id即可代码高亮支持常见语法的高亮,并显示行号,代码语言等同分类上下篇文章启用该功能后文章页面下方的上一篇文章与下一篇文章,将只展现当前文章分类下的文章ajax评论功能无刷新评论,可以放心在文章中插入音乐,而不用担心评论后歌曲会断掉评论表情功能评论时支持插入模板内置表情,提高用户粘性垃圾评论过滤功能可以屏蔽非中文评论,支持过滤网址,设置屏蔽昵称,设置屏蔽邮箱等分类展示页面展示分类名字,分类描述,以及当前分类的最新一篇文章回复可见功能文章内设置后,游客或者其他用户需要评论才能看到隐藏内容,文章作者则可以直接观看seo优化支持自定义文章的描述与关键字[暂未上线功能]主题出售收费是为了后续更好的维护,感谢您的支持。主题售价:系列售价 QingYi¥88 QingYi For Typecho 主题不适用于 WordPress免费试用版:https://www.lanzous.com/i3lqimf内容:您可以获得本款主题的最新版,并将获得后续更新支持。注意事项:购买主题后,您将获得主题源代码,主题不加密,不绑定域名,购买后可随意使用,但不得分发、转售。因主题是可复制的商品,在代码发出后不予退款,敬请谅解。售后支持主题免费升级,但不提供免费的个性化定制服务。什么是分发?指以不盈利的方式赠与他人,或在网络等其他渠道派发的行为!什么是转售?指以盈利为目的将模板低价或者高价卖出的行为!每份主题我都会加入一些特定标识,这样一旦出现分发转售的行为,能快速定位用户,并取消该用户的售后服务。购买方式:扫码付款后,将订单账号以邮件方式发送到邮箱bssf@qq.com,并说明购买QingYi主题即可,或直接联系下方联系QQ。人工购买方式↓↓↓QQ:485868654 或 点击直接 QQ 咨询支付宝:bssf@qq.com更新日志2019-10-11更新至1.4.6版本将超链接的绿色改为淡蓝色,绿按钮改为深蓝色,夜间模式样式优化2019-08-28更新至1.4.5版本1,删除frame标签尺寸控制,解决网易云播放器显示问题2,修复移动端菜单栏横向滚动问题3,ajax评论的评论过滤代码缩减一倍4,模板设置支持设置全站文章登录可见5,文章自定义字段支持为单个文章设置登录可见6,模板帮助文字优化7,修复chrome76的ajax评论时重复显示bug8,对typecho评论存在的xss问题进行拦截,提高安全性9,修复分类超过9个后没有颜色的问题2019-07-31更新至1.3.8版本1,支持自定义文章描述与关键字2,支持邀请码插件详见帮助3,修正分类页面部分显示bug4,友链页面适配友链插件详见帮助5,修复一处id重复导致的谷歌报错6,Rdog插件升级代码更加规范,注:此版本模板不兼容旧版Rdog插件7,加入关闭头图功能,关闭后部分外观会有些许不同8,logo设置功能加入9,模板设置帮助页面边距调整更多更新日志请前往这里...

阅读文章
Typecho搜索插件发布说明

sosotypecho程序的搜索增强插件项目地址https://github.com/jrotty/soso使用说明下载后将soso文件夹传到typecho目录下,然后启动插件,打开插件设置,根据文字提示设置即可。功能介绍搜索模式:有常规搜索和仅搜索文章标题两种模式。搜索过滤:可以设置一些分类,让其不被搜索到。搜索高亮:搜索结果页面,文章标题和缩略内容中的关键字高亮显示。注意:缩略内容使用<?php $this->excerpt(140, '...'); ?>来截取的并不会高亮,因为这个地方没有插件接口,可以将这个函数换成插件内置的方法<?php $this->excerpts($this,140); ?>,也可以这样写个判断<?php $all = Typecho_Plugin::export(); if(array_key_exists('Soso', $all['activated'])): ?> <?php $this->excerpts($this,140); ?>//插件启动就调用插件的这个方法 <?php else: ?> <?php $this->excerpt(140, '...'); ?>//插件没启动就调用默认方法 <?php endif; ?>更新日志2019.8.19升级为1.1.0版本优化了高亮缩略内容的语法较少一个设置项,支持根据分类id进行搜索内容(需模板配合)2019.4.29升级为1.0.6版本修复部分情况下文章重复输出问题2018.12.9升级为1.0.5版本修复插件间的兼容性问题,同时针对Meting插件语法不进行关键词高亮。插件背后的故事其实这个插件早就有点想法了,但是自己渣,文档看不懂,所以最基本的搜索功能都研究了好多天,本来是想顺便解决搜索会过滤空格的问题,但是插件上我没有做到。还想着前台指定分类进行搜索,结果也没做到。Typecho开发版搜索已经不会过滤掉空格了,插件也支持指定分类进行搜索后来想到模板群的群友说wp可以设置只搜索文章标题,typecho不知道怎么弄,当时我告诉他修改源代码的某个位置。于是这个插件就把这个功能加上了。搜索结果屏蔽某些分类,这个功能其实是我自己比较需要的,有些东西没必要展现到搜索结果里。因为看过一极乐博客的这个文章《javascript实现typecho搜索结果关键词高亮显示》,所以就加了个搜索词高亮显示的功能,默认就是显示红色。感谢:感谢香菇帮助修复bug,感谢Rakiy的CateFilter作为参...

阅读文章
Typecho常用统计

常用统计一些常用统计<?php Typecho_Widget::widget('Widget_Stat')->to($stat); ?> 文章总数:<?php $stat->publishedPostsNum() ?>篇 分类总数:<?php $stat->categoriesNum() ?>个 评论总数:<?php $stat->publishedCommentsNum() ?>条 页面总数:<?php $stat->publishedPagesNum() ?>个 当前作者的文章总数:<?php $stat->myPublishedPostsNum() ?>篇程序自带的统计函数详细具体参数如下说明代码获取已发布的文章数目publishedPostsNum获取待审核的文章数目waitingPostsNum获取草稿文章数目draftPostsNum获取当前用户已发布的文章数目myPublishedPostsNum获取当前用户待审核文章数目myWaitingPostsNum获取当前用户草稿文章数目myDraftPostsNum获取当前用户已发布的文章数目currentPublishedPostsNum获取当前用户待审核文章数目currentWaitingPostsNum获取当前用户草稿文章数目currentDraftPostsNum获取已发布页面数目publishedPagesNum获取草稿页面数目draftPagesNum获取当前显示的评论数目publishedCommentsNum获取当前待审核的评论数目waitingCommentsNum获取当前垃圾评论数目spamCommentsNum获取当前用户显示的评论数目myPublishedCommentsNum获取当前用户显示的评论数目myWaitingCommentsNum获取当前用户显示的评论数目mySpamCommentsNum获取当前文章的评论数目currentCommentsNum获取当前文章显示的评论数目currentPublishedCommentsNum获取当前文章显示的评论数目currentWaitingCommentsNum获取当前文章显示的评论数目currentSpamCommentsNum获取分类数目categoriesNum该统计函数来自源码typecho/var/Widget/Stat.ph...

阅读文章
Typecho输出文章附件内所有图片的函数

typecho如果想做一个相册主题,或者相册分类的话,下面的代码很实用哦!函数在functions.php中放入如下函数//获取附件图片 function getAttachImg($cid) { $db = Typecho_Db::get(); $rs = $db->fetchAll($db->select('table.contents.text') ->from('table.contents') ->where('table.contents.parent=?', $cid) ->order('table.contents.cid', Typecho_Db::SORT_ASC)); $attachPath = array(); foreach($rs as $attach) { $attach = unserialize($attach['text']); if($attach['mime'] == 'image/jpeg') { $attachPath[] = array($attach['name'], $attach['path']); } } return $attachPath; }然后在post.php中放入如下代码,即可输出当前文章附件中所有图片<?php $imgs = getAttachImg($this->cid); foreach($imgs as $img) { echo "<img src=\"$img[1]\" title=\"$img[0]\" class=\"post-item-img\">"; } ?>香菇提示函数文件中默认中只做了 image/jpeg mime类型的图片判断,可根据需要补充 image/png image/gif 等格式将函数中的if判断if($attach['mime'] == 'image/jpeg')改为if($attach['mime'] == 'image/jpeg'||$attach['mime'] == 'image/png'||$attach['mime'] == 'image/gif')用处配合一些前端框架什么的,即可做成一个typecho的相册模板,或者相册分类。这里推荐一款可能十分优秀的typecho相册模板→《Photograph Theme for Typecho》声明:本篇文章中的代码均来自《Photograph Theme for Typecho》模板中,该模板作者是个十分低调的...

阅读文章
《Typecho 那些事(上)》观后感

joyqi之前做了个直播《Typecho 那些事(上)》,此篇文章就是记录下直播内容,为啥写成观后感呢,因为感觉这样写好像更小学生一点,记得小学时看个电影都会被要求写观后感,被强制看本书都要写读后感,然后假装看了书假装有感而发。typecho官方读法type echo这两个单词合起来的读法,读音:太拍~扣常量用于改变typecho的功能或者自定义一些功能1,TYPECHO_DEBUG做第三方开发必须打开的,报错信息会更加详细,方便找到开发错误点。用法在config.inc.php最后面插入define('__TYPECHO_DEBUG__', true);2,TYPECHO_ADMIN_DIR后台路径定义,用于修改程序后台地址,提高安全性。用法typecho默认后台地址是admin,如果我们想改成typecho-admin,那么首先登陆服务器把admin文件夹名字改成typecho-admin。然后在config.inc.php找到define('__TYPECHO_ADMIN_DIR__', '/admin/');将其中的admin改成typecho-admin即可。3,TYPECHO_UPLOAD_DIRTYPECHO_UPLOAD_URL可以单独定义一个不在typecho下的附件上传地址存储到这里有什么用呢?在config.inc.php最后面插入define('__TYPECHO_UPLOAD_DIR__', '/www/static'); define('__TYPECHO_UPLOAD_URL__', 'https://xxxxx.upyun.com');你可以给他单独一个反向代理,就是cdn,七牛,又拍云等cdn可以访问到的地址,然后通过反向代理把你这个路径抓取的,抓取过去后,你那前面的展示地址就可以换成你的cdn地址了,比如上述代码中https://xxxxx.upyun.com。4,TYPECHO_SECUER当你用https的时候typecho会自动识别的,但是因为大家的环境千差万别,会有识别错误的情况,比如你https都布置好了,但是程序依旧只会加载http的,所以该常量的作用就是强制程序使用https,解决识别错误的情况。用法在config.inc.php最后面插入define('__TYPECHO_SECUER__', true);5,TYPECHO_GRAVATR_PREFIXtypecho用的GRAVATR的公共头像地址,GRAVATR的服务器在美国,虽然它在全世界做镜像,但是在国内依旧很慢。然后发现有国内有很多人为其做反向代理,把头像缓存到本地,来提高速度,以前大家可能会使用插件来替换typecho的GRAVATR的默认地址,实际上不需要,我们用这个常量就可以了,比如我们替换成https://gravatar.cat.net/avatar/,用法如下用法在config.inc.php最后面插入define('__TYPECHO_GRAVATR_PREFIX__', 'https://gravatar.cat.net/avatar');这样一来typecho就会替换成https://gravatar.cat.net/avatar/渠道的头像地址。【有些模板可能不支持】皮肤1,引用皮肤其他部分比如header,footer时用$this->need('xxx'),而不是用php的require,includ,因为this need时typecho本身的方法,他会去做一些判断,文件,路径,是否存在等等。2,head末尾别忘加$this->header()body末尾别忘加$this->footer()主要用于插件引用前端资源,比如js。3,单独自定义皮肤给某个分类自定义皮肤在模板文件夹下,建立文件夹category,然后在里面放置一个php文件,名字为分类缩略名.php,然后里面的内容就是你想要自定义的皮肤。给某个独立页面自定义皮肤在模板文件夹下,建立文件夹page,然后在里面放置一个php文件,名字为缩略名.php,然后里面的内容就是你想要自定义的皮肤。给某篇文章自定义皮肤在模板文件夹下,建立文件夹post,然后在里面放置一个php文件,名字为文章id.php,然后里面的内容就是你想要自定义的皮肤。4,为皮肤定制自定义变量typecho内置的东西,可以在制作模板的时候为每个文章定义好一个自定义字段,方便模板去调用。用法在functions.php中加入下面代码function themeFields($layout) { $thumb = new Typecho_Widget_Helper_Form_Element_Text('thumb', NULL, NULL, _t('自定义缩略图'), _t('输入缩略图地址(仅文章有效)')); $layout->addItem($thumb); }插件Widget全局钩子看原作者文章介绍吧https://joyqi.com/typecho/iplocation-plugin.htmlDB什么的缓存巴拉巴拉~听不懂啦备份功能typecho已经有自带的备份功能了,这个功能时基于2进制,有跨平台性,也就是说,即使你服务器搬家数据库环境不一致,用这个备份导入也ok。未来计划1.1版本的发布(已完成)1.1之后的下一版会加入一个更大的功能___市场,工作量比较大,之后大家可以在市场里发布自己的插件,皮肤等。也可能做收费的渠道,能够给第三方开发者赚点外快。市场上线时间?没有准确时间,1.1版本发布会就会投入开发感想直播感觉准备不足哈,因为我是看的录播,开1.5倍播放速度才好些,不过也十分感谢作者大大啦,期待下...

阅读文章
Live2D看板娘来了!typecho插件

没错,这是一篇水文(逃其实早想加了的,不过懒,最近在小白-白那看到了WordPress版插件,便开始动手了(移植)。emmm 原作折腾过程我就不多说了,参考原文:https://www.fczbl.vip/946.html说说我的折腾过程,其实很简单,下载WordPress版插件,将资源全部上传,然后把index.php改成对应typecho的Plugin.php测试->报错->修改->报错->修改-...->修改->功能正常了!于是下一步,将原作者的超链接什么的改成我的,捂脸额,发现还有个一言api没有改成我的,还好我也有现成的api,改,完美。1:1移植完成,手机端会隐藏哦,WordPress也是哈!下载地址如下typecho版插件:https://pan.baidu.com/s/1QfV4-LsOb0zZd8pbdTw8PAtypecho版本不维护了,不过大家可以去这个地址下载类似的插件https://paugram.com/coding/add-poster-girl-with-plugin.htmlWordPress插件(22&33):https://www.fczbl.vip/946.html使用方法下载压缩包解压上传至站点 /usr/plugins 目录下,并将文件夹重命名为l2d233登录后台启用点击设置根据需要勾选2018年7月7日维护1,修复不显示问题2,一言接口调整,旧版地址...

阅读文章
typecho显示用户文章总数量

之前写过类似文章《typecho 显示当前作者文章总数量》,但是实现方法明显不太好。所以今天写个函数来获取吧!在functions.php中加入如下函数function allpostnum($id){ $db = Typecho_Db::get(); $postnum=$db->fetchRow($db->select(array('COUNT(authorId)'=>'allpostnum'))->from ('table.contents')->where ('table.contents.authorId=?',$id)->where('table.contents.type=?', 'post')); $postnum = $postnum['allpostnum']; return $postnum; }显示当前作者文章总数量调用代码如下(适用于post.php,author.php,或者index.phpwhile循环中等等)<?php echo allpostnum($this->author->uid); ?>显示特定uid作者文章总数量调用代码如下(适用于任意模板文件)<?php echo allpostnum(1); ?> //数字1改成对应作者的uid即可之前不写函数是以因为我不会哈,昨天研究下数据库,发现这玩意没那么复杂,挺有趣的233!代码解析$db = Typecho_Db::get(); //获取数据库 $postnum=$db->fetchRow($db->select(array('COUNT(authorId)'=>'allpostnum'))->from ('table.contents')->where ('table.contents.authorId=?',$id)->where('table.contents.type=?', 'post')); //按条件查询数据,将符合结果的条数生成一个数组 //print_r($postnum);取消注释可调试显示结果 $postnum = $postnum['allpostnum']; //获取作者文章总数量 return $postnum; //返回作者文章总数量,用return能够更加方便的处理事情感谢感谢远.山教我用COUNT语法直接可以返回符合结果的数量,提高代码效...

阅读文章
Typecho非插件实现文章置顶功能

其实在写themia模板时,就用了个非插件的文章置顶功能,然而那个代码不能置顶文章内容,只能置顶标题,而且代码比较繁琐。而后最近看到隔壁友链写了个《Typecho非插件文章置顶》,于是我对此进行了转载并做了点修改弥补一些需求!他是根据 Sticky插件 文章置顶插件写的代码,所以看上去挺像的。步骤一在 index.php 的 $this->title(); 前面加上 $this->sticky();可出现这段 html. 例: <h2 class="title"><a href="<?php $this->permalink() ?>"><?php $this->sticky(); $this->title() ?></a></h2>步骤二下面代码放在主题下index.php中:/** 文章置顶 */ $sticky = '1'; //置顶的文章cid,按照排序输入, 请以半角逗号或空格分隔 if($sticky && $this->is('index') || $this->is('front')){ $sticky_cids = explode(',', strtr($sticky, ' ', ','));//分割文本 $sticky_html = "<span style='color:red'>[置顶] </span>"; //置顶标题的 html $db = Typecho_Db::get(); $pageSize = $this->options->pageSize; $select1 = $this->select()->where('type = ?', 'post'); $select2 = $this->select()->where('type = ? && status = ? && created < ?', 'post','publish',time()); //清空原有文章的列队 $this->row = []; $this->stack = []; $this->length = 0; $order = ''; foreach($sticky_cids as $i => $cid) { if($i == 0) $select1->where('cid = ?', $cid); else $select1->orWhere('cid = ?', $cid); $order .= " when $cid then $i"; $select2->where('table.contents.cid != ?', $cid); //避免重复 } if ($order) $select1->order(null,"(case cid$order end)"); //置顶文章的顺序 按 $sticky 中 文章ID顺序 if ($this->_currentPage == 1) foreach($db->fetchAll($select1) as $sticky_post){ //首页第一页才显示 $sticky_post['sticky'] = $sticky_html; $this->push($sticky_post); //压入列队 } $uid = $this->user->uid; //登录时,显示用户各自的私密文章 if($uid) $select2->orWhere('authorId = ? && status = ?',$uid,'private'); $sticky_posts = $db->fetchAll($select2->order('table.contents.created', Typecho_Db::SORT_DESC)->page($this->_currentPage, $this->parameter->pageSize)); foreach($sticky_posts as $sticky_post) $this->push($sticky_post); //压入列队 $this->setTotal($this->getTotal()-count($sticky_cids)); //置顶文章不计算在所有文章内 }这个东西输入文字cid整合到模板设置里,想必也是极好的!!!那么如何做呢?上文中$sticky = '1';改为$sticky = $this->options->sticky;,然后在functions.php中添加如下代码即可 $sticky = new Typecho_Widget_Helper_Form_Element_Text('sticky', NULL,NULL, _t('文章置顶'), _t('置顶的文章cid,按照排序输入, 请以半角逗号或空格分隔')); $form->addInput($sticky);泽泽的修改记录2018.2.281,昨天和作者沟通,作者说被置顶的文章文章列表里就不会再显示了,这个本来是个挺好的处理方式,但是今天我想到了它有个小问题,就是被置顶文章分类页面或者搜索页面也不会显示出来了,这个就不太好了,于是特此修复下!2018.2.271,置顶的文章只会对首页生效,不会对分类页面生效。2,文章cid输入方式改为和Sticky插件一样,即在注释部分输入需要置顶文章的cid按照排序输入, 请以半角逗号或空格分隔。原作者的更新记录2018.2.61,登录时,显示用户各自的私密文章2018.2.71,隐藏定时发送的文章文章代码转自:https://www.littlehands.site/archives/typecho_sticky.ht...

阅读文章
至顶至底(雷姆拉姆)Typecho插件

网页左右下角分别是拉姆和雷姆,点击就会触发至顶至底功能,插件需要加载 jquery。插件介绍加载插件后,页面左右下角出现拉姆和雷姆,点击就会触发至顶和至底功能。Typecho插件:https://www.mfeng.cc/archives/2018/02/17/Typecho_Top_LamuLeimu.htmlz-blog 插件:https://qqdie.com/archives/top-to-bottom-rem-ram-zblog-plugin.htmlWordPress插件:https://qqdie.com/archives/top-to-bottom-rem-ram-wp-plugin.htmlemlog 插件:https://qqdie.com/archives/top-to-bottom-rem-ram-emlog-plugin.htmlDISCUZ插件:https://dyedd.cn/40.html( http://addon.discuz.com/?@dye_tbm.plugin )其实typecho版本我也想自己写来着,结果被人抢先水文了233。不过即使被别人抢先了,我觉得也水下!效果图吐槽新的水文素材完结了233!!!最近安装了emlog,z-blog,wp用来研究,我发现emlog写起来简单,但是插件设置我不会写233。(没有深入太多的了解,嘻嘻...

阅读文章
Typecho利用自定义页面,随机跳转到某篇文章

声明:文章转自https://blog.iplayloli.com/redirect-to-random-post.html当我们的博客文章很多时,无法很直观的展示所有文章给读者,这时候我们可随机给读者显示一篇文章。下面这个方法也是在网上找的一些教程累积的方法,不需要修改typecho源文件,只需要在主题文件夹下,新建一个php文件,名字自定义,然后把以下代码扔进去: <?php /**  * 手气最佳  *  * @package custom  */ if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?> <?php $db = Typecho_Db::get(); $sql = $db->select('MAX(cid)')->from('table.contents')     ->where('status = ?','publish')     ->where('type = ?', 'post')     ->where('created <= unix_timestamp(now())', 'post'); $result = $db->fetchAll($sql); $max_id = $result[0]['MAX(`cid`)'];//POST类型数据最大的CID $sql = $db->select('MIN(cid)')->from('table.contents')     ->where('status = ?','publish')     ->where('type = ?', 'post')     ->where('created <= unix_timestamp(now())', 'post'); $result = $db->fetchAll($sql); $min_id = $result[0]['MIN(`cid`)'];//POST类型数据最小的CID $result = NULL; while($result == NULL) {     $rand_id = mt_rand($min_id,$max_id);     $sql = $db->select()->from('table.contents')         ->where('status = ?','publish')         ->where('type = ?', 'post')         ->where('created <= unix_timestamp(now())', 'post')         ->where('cid = ?',$rand_id);     $result = $db->fetchAll($sql); } ?> <!--下面就是实现显示跳转到随机文章--> <?php $target = Typecho_Widget::widget('Widget_Abstract_Contents')->filter($result['0']); ?> <!--跳转-->   <?php $this->response->redirect($target['permalink'],307); ?>好了,然后在后要新建一个自定义页面,引用这个php文件即可。实际效果请看他的博客http://www.hzv5.cn/导航栏手气按...

阅读文章
WordCount一个typecho文章字数计数插件

WordCount一个typecho文章字数统计插件插件简述:文章字数计算器,实时计算: 字数等于文字数量加数字数量; 字符数量就是字符数量; 文字字数包含中日韩文字; 符号数量会过滤掉空格和回车; 字母数量等于大小写字母; 数字即0-9。小问题:对于编辑器插入的图片地址或者链接地址也会算入进去最新版插件已解决,同时一些不常用符号也会被当成文字进行计算下载地址:https://github.com/jrotty/WordCount效果演示如图:当然如果你不想用插件也想要这种功能,可以通过修改模板文件来实现在模板functions.php中加入以下代码即可【代码来自WordCount插件1.1版,后续插件升级的话文章这里并不会做修改】Typecho_Plugin::factory('admin/write-post.php')->bottom = array('myyodu', 'one'); Typecho_Plugin::factory('admin/write-page.php')->bottom = array('myyodu', 'one'); class myyodu { public static function one() { ?> <style> .field.is-grouped{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start; -ms-flex-wrap: wrap;flex-wrap: wrap;}.field.is-grouped>.control{-ms-flex-negative:0;flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:.5rem;margin-right:.75rem}.field.is-grouped>.control.is-expanded{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.field.is-grouped.is-grouped-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.field.is-grouped.is-grouped-multiline{-ms-flex-wrap:wrap;flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}.tags{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.tags.has-addons .tag:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.tag{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f5f5f5;border-radius:3px;color:#4a4a4a;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:.75rem;height:2em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag .delete{margin-left:.25em;margin-right:-.375em}.tag.is-white{background-color:#fff;color:#0a0a0a}.tag.is-black{background-color:#0a0a0a;color:#fff}.tag.is-light{background-color:#fff;color:#363636}.tag.is-dark{background-color:#363636;color:#f5f5f5}.tag.is-primary{background-color:#00d1b2;color:#fff}.tag.is-info{background-color:#3273dc;color:#fff}.tag.is-success{background-color:#23d160;color:#fff}.tag.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.tag.is-danger{background-color:#ff3860;color:#fff}.tag.is-large{font-size:1.25rem}.tag.is-delete{margin-left:1px;padding:0;position:relative;width:2em}.tag.is-delete:after,.tag.is-delete:before{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);-webkit-transform-origin:center center;transform-origin:center center}.tag.is-delete:before{height:1px;width:50%}.tag.is-delete:after{height:50%;width:1px}.tag.is-delete:focus,.tag.is-delete:hover{background-color:#e8e8e8}.tag.is-delete:active{background-color:#dbdbdb}.tag.is-rounded{border-radius:290486px} </style> <script language="javascript"> var EventUtil = function() {}; EventUtil.addEventHandler = function(obj, EventType, Handler) { if (obj.addEventListener) { obj.addEventListener(EventType, Handler, false); } else if (obj.attachEvent) { obj.attachEvent('on' + EventType, Handler); } else { obj['on' + EventType] = Handler; } } if (document.getElementById("text")) { EventUtil.addEventHandler(document.getElementById('text'), 'propertychange', CountChineseCharacters); EventUtil.addEventHandler(document.getElementById('text'), 'input', CountChineseCharacters); } function showit(Word) { alert(Word); } function CountChineseCharacters() { Words = document.getElementById('text').value; var W = new Object(); var Result = new Array(); var iNumwords = 0; var sNumwords = 0; var sTotal = 0; var iTotal = 0; var eTotal = 0; var otherTotal = 0; var bTotal = 0; var inum = 0; var znum = 0; var gl = 0; var paichu = 0; for (i = 0; i < Words.length; i++) { var c = Words.charAt(i); if (c.match(/[\u4e00-\u9fa5]/) || c.match(/[\u0800-\u4e00]/) || c.match(/[\uac00-\ud7ff]/)) { if (isNaN(W[c])) { iNumwords++; W[c] = 1; } iTotal++; } } for (i = 0; i < Words.length; i++) { var c = Words.charAt(i); if (c.match(/[^\x00-\xff]/)) { if (isNaN(W[c])) { sNumwords++; } sTotal++; } else { eTotal++; } if (c.match(/[0-9]/)) { inum++; } if (c.match(/[a-zA-Z]/)) { znum++; } if (c.match(/[\s]/)) { gl++; } if (c.match(/[ ◕‿↑↓←→↖↗↘↙↔↕。《》、【】“”•‘’❝❞′……—―‐〈〉„╗╚┐└‖〃「」‹›『』〖〗〔〕∶〝〞″≌∽≦≧≒≠≤≥㏒≡≈✓✔◐◑◐◑✕✖★☆₸₹€₴₰₤₳र₨₲₪₵₣₱฿₡₮₭₩₢₧₥₫₦₠₯○㏄㎏㎎㏎㎞㎜㎝㏕㎡‰〒々℃℉ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ]/)) { paichu++; } } document.getElementById('hanzi').innerText = iTotal - paichu; document.getElementById('zishu').innerText = inum + iTotal - paichu; document.getElementById('biaodian').innerText = sTotal - iTotal + eTotal - inum - znum - gl + paichu; document.getElementById('zimu').innerText = znum; document.getElementById('shuzi').innerText = inum; document.getElementById("zifu").innerHTML = iTotal * 2 + (sTotal - iTotal) * 2 + eTotal; } </script> <script> $(document).ready(function(){ $("#wmd-editarea").append('<div class="field is-grouped"><span class="tag">共计:</span><div class="control"><div class="tags has-addons"><span class="tag is-dark" id="zishu">0</span> <span class="tag is-primary">个字数</span></div></div><div class="control"><div class="tags has-addons"><span class="tag is-dark" id="zifu">0</span> <span class="tag is-primary">个字符</span></div></div><span class="tag">包含:</span><div class="control"><div class="tags has-addons"><span class="tag is-light" id="hanzi">0</span> <span class="tag is-danger">个文字</span></div></div><div class="control"><div class="tags has-addons"><span class="tag is-light" id="biaodian">0</span> <span class="tag is-info">个符号</span></div></div><div class="control"><div class="tags has-addons"><span class="tag is-light" id="zimu">0</span> <span class="tag is-success">个字母</span></div></div><div class="control"><div class="tags has-addons"><span class="tag is-light" id="shuzi">0</span> <span class="tag is-warning">个数字</span></div></div></div>'); CountChineseCharacters(); }); </script> <?php } }css和js均扒自http://www.eteste.com/,其中js略有改动为什么突然要写这个插件?因为之前发文章参与活动惨遭字数要求,然后呢,发现typecho编辑器那里并没有实时统计字数的东西,于是为了快速搞出插件就用了扒的方式。本来不做任何修改就可以的并且能很好的识别中文符号,但是我想让他支持日文韩文,结果支持日文后中文的一些符号也会呗当作文字进行计算了,然后一顿瞎改过滤了一些识别错误的常用符号,感觉就可以用了,虽然还是有些符号会被当作文字计算,但是我觉得只要不是常用的标点符号,当作文字计算也没啥毛病,比如以下符号:ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ①②③④⑤⑥⑦⑧⑨⑩⒈⒉⒊⒋ ⒌⒍⒎⒏⒐⒑⑴⑵⑶⑷⑸⑹⑺⑻⑼...

阅读文章
模板层面向typecho编辑器页面插入css js

大家都知道在functions.php中加入类似下面的代码,会强行为每个文章(即文章编辑页面)设置一个自定义字段function themeFields($layout) { $thumb = new Typecho_Widget_Helper_Form_Element_Text('thumb', NULL, NULL, _t('自定义缩略图'), _t('描述文字')); $layout->addItem($thumb); }然而经过我大脑灵光一现,想到了个有趣的点子,上面代码中描述文字是支持html格式的,这个其实都是众所周知的事情。那么事情就变得有趣了,我们是否可以通过这个描述文字插入css或者js呢,答案是肯定的。于是代码改成function themeFields($layout) { $thumb = new Typecho_Widget_Helper_Form_Element_Text('thumb', NULL, NULL, _t('自定义缩略图'), _t('输入缩略图地址(仅文章有效)<style>.wmd-button-row {height:auto;}.copyright p:after {content: "YoDu魔法优化中";margin-left: 6px;font-size: 12px;}</style>')); $layout->addItem($thumb); }测试了下完全ojbk,其中.wmd-button-row {height:auto;}是优化编辑器手机端显示不全的问题,另外一行代码.copyright p:after {content: "YoDu魔法优化中";margin-left: 6px;font-size: 12px;}纯粹为了装逼,效果如下js代码没有测试,应该也是ok的,谁有好用的点子,欢迎分享哈!!!虽然方法傻瓜了点,但是我觉得这种奇葩方式挺有趣的2...

阅读文章
Typecho添加AMP支持

文章内容转自https://holmesian.org/typecho-upgrade-AMP,略有修改Typecho至今没有出任何支持AMP的插件或主题,我没去想怎么用插件实现AMP,而是直接通过修改模板的post.php、function.php文件来暴力实现,原则上所有模板都可以用。效果就是在任何一篇博文的url后面加上amp=1即可访问amp版的页面,例如本文的AMP页面,总之实现起来也很简单。具体步骤如下:对模板里的post.php文件做如下修改(后台控制台》外观》编辑当前外观》post.php):<?php if (isset($_GET['amp'])){; ?> <!doctype html> <html amp lang="zh"> <head> <meta charset="utf-8"> <script async src="https://cdn.ampproject.org/v0.js"></script> <title><?php $this->title() ?></title> <link rel="canonical" href="<?php $this->permalink() ?>" /> <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"> <meta name="description" content="<?php $this->description(); ?>" /> <meta name="keywords" content="<?php $this->tags(',', false, 'none'); ?>" /> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "BlogPosting", "headline": "<?php $this->title(); ?>", "mainEntityOfPage": "<?php $this->permalink() ?>", "author": { "@type": "Person", "name": "<?php $this->author(); ?>" }, "datePublished": "<?php $this->date('F j, Y'); ?>", "dateModified": "<?php $this->date('F j, Y'); ?>", "image": { "@type": "ImageObject", "url": "<?php print_r(get_post_img($this));?>", "width": 700, "height": 400 }, "publisher": { "@type": "Organization", "name": "<?php $this->options->title(); ?>", "logo": { "@type": "ImageObject", "url": "https://qqdie.com/tu/400x400l.png", "width": 200, "height": 200 } }, "description": "<?php $this->excerpt(60, '...'); ?>" } </script> <style amp-custom>*{margin:0;padding:0}html,body{height:100%}body{background:#fff;color:#666;font-size:14px;font-family:"-apple-system","Open Sans","HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,sans-serif}::selection,::-moz-selection,::-webkit-selection{background-color:#2479CC;color:#eee}h1{font-size:1.5em}h3{font-size:1.3em}h4{font-size:1.1em}a{color:#2479CC;text-decoration:none}article{padding:85px 15px 0}article .entry-content{color:#444;font-size:16px;font-family:Arial,'Hiragino Sans GB',冬青黑,'Microsoft YaHei',微软雅黑,SimSun,宋体,Helvetica,Tahoma,'Arial sans-serif';-webkit-font-smoothing:antialiased;line-height:1.8;word-wrap: break-word;word-break: break-all;}article h1.title{color:#333;font-size:2em;font-weight:300;line-height:35px;margin-bottom:25px}article .entry-content p{margin-top:15px}article h1.title a{color:#333;transition:color .3s}article h1.title a:hover{color:#2479CC}article blockquote{background-color:#f8f8f8;border-left:5px solid #2479CC;margin-top:10px;overflow:hidden;padding:15px 20px}article code{background-color:#eee;border-radius:5px;font-family:Consolas,Monaco,'Andale Mono',monospace;font-size:80%;margin:0 2px;padding:4px 5px;vertical-align:middle}article pre{background-color:#f8f8f8;border-left:5px solid #ccc;color:#5d6a6a;font-size:14px;line-height:1.6;overflow:hidden;padding:0.6em;position:relative;white-space:pre-wrap;word-break:break-word;word-wrap:break-word}article table{border:0;border-collapse:collapse;border-spacing:0}article pre code{background-color:transparent;border-radius:0 0 0 0;border:0;display:block;font-size:100%;margin:0;padding:0;position:relative}article table th,article table td{border:0}article table th{border-bottom:2px solid #848484;padding:6px 20px;text-align:left}article table td{border-bottom:1px solid #d0d0d0;padding:6px 20px}article .copyright-info,article .amp-info{font-size:14px}article .expire-tips{background-color:#f5d09a;border:1px solid #e2e2e2;border-left:5px solid #fff000;color:#333;font-size:15px;padding:5px 10px;margin:20px 0px}article .post-info,article .entry-content .date{font-size:14px}article .entry-content blockquote,article .entry-content ul,article .entry-content ol,article .entry-content dl,article .entry-content table,article .entry-content h1,article .entry-content h2,article .entry-content h3,article .entry-content h4,article .entry-content h5,article .entry-content h6,article .entry-content pre{margin-top:15px}article pre b.name{color:#eee;font-family:"Consolas","Liberation Mono",Courier,monospace;font-size:60px;line-height:1;pointer-events:none;position:absolute;right:10px;top:10px}article .entry-content .date{color:#999}article .entry-content ul ul,article .entry-content ul ol,article .entry-content ul dl,article .entry-content ol ul,article .entry-content ol ol,article .entry-content ol dl,article .entry-content dl ul,article .entry-content dl ol,article .entry-content dl dl,article .entry-content blockquote > p:first-of-type{margin-top:0}article .entry-content ul,article .entry-content ol,article .entry-content dl{margin-left:25px}.header{background-color:#fff;box-shadow:0 0 40px 0 rgba(0,0,0,0.1);box-sizing:border-box;font-size:14px;height:60px;padding:0 15px;position:absolute;width:100%}.footer{font-size:.9em;padding:15px 0 25px;text-align:center;width:auto}.header h1{font-size:30px;font-weight:400;line-height:30px;margin:15px 0px}.menu-list li a,.menu-list li span{border-bottom:solid 1px #ededed;color:#000;display:block;font-size:18px;height:60px;line-height:60px;text-align:center;width:86px}.header h1 a{color:#333}.tex .hljs-formula{background:#eee8d5}</style> <style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style> <noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript> </head> <body> <header class="header"><div class="header-title"><h1><a href="/"><?php $this->options->title(); ?></a></h1></div></header> <article class="post"><h1 class="title"><?php $this->title(); ?></h1> <div class="entry-content"> <?php ampInit($this);?> <?php $this->content(); ?> </div> <p class="expire-tips">当前页面是本站的「<a href="//www.ampproject.org/zh_cn/">Google AMP</a>」版。查看和发表评论请点击:<a href="<?php $this->permalink() ?>">完整版 »</a></p> </article> </body> </html> <?php } else {?> \\这里是原模板内容 <?php }?>接着在functions.php文件末尾添加下列两个函数。 function ampInit($archive) { if ($archive->is('single')) { $archive->content = str_replace('<img','<amp-img width="900" height="675" layout="responsive" ',$archive->content); $archive->content = str_replace('img>','amp-img>',$archive->content); $archive->content = str_replace('<!- toc end ->','',$archive->content); $archive->content = str_replace('javascript:content_index_toggleToc()','#',$archive->content); } } function get_post_img($archive) { $cid = $archive->cid; $db = Typecho_Db::get(); $rs = $db->fetchRow($db->select('table.contents.text') ->from('table.contents') ->where('cid=?', $cid)); $text = $rs['text']; $pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i'; $patternMD = '/\!\[.*?\]\((http(s)?:\/\/.*?(jpg|png))/i'; $patternMDfoot = '/\[.*?\]:\s*(http(s)?:\/\/.*?(jpg|png))/i'; if (preg_match($patternMDfoot, $text, $img)) { $img_url = $img[1]; } else if (preg_match($patternMD, $text, $img)) { $img_url = $img[1]; } else if (preg_match($pattern, $text, $img)) { preg_match("/(?:\()(.*)(?:\))/i", $img[0], $result); $img_url = $img[1]; } else { $img_url ='https://holmesian.org/usr/themes/Holmesian/images/holmesian.png?type=markdown'; } return $img_url; }最后在header.php中添加下列内容 <?php if ($this->is('post')): ?> <link rel="amphtml" href="<?php $this->permalink() ?>?amp=1"> <?php endif; ?>全部修改之后,刷新缓存,就可以访问AMP页面啦。PS:可以到这里测试你的AMP页面是否正确有效。PS2:Google大概会在48小时内抓取到AMP页面,并在搜索结果中体现出来。效果如...

阅读文章
Typecho 1.1正式版发布了?

2017.10.24 Typecho 1.1Beta版发布2017.10.29 Typecho 1.1正式版发布2017.10.30 Typecho 1.1正式版重新发布2017.11.xx Typecho 1.1正式版修订版发布官方下载地址:http://typecho.org/download更新内容:修复两个高危的漏洞(XMLRPC的和安装文件的),大家在升级时请覆盖原有的根目录下的install.php文件新增了备份功能新增了若干的插件钩子和特性修正了上一个版本以来的大量错误新增了Mysqli适配器增加夏令时支持修正了反垃圾的措施,自带的反垃圾方法已经能够挡掉绝大部分机器人了替换了 Markdown 解析引擎,保证预览与实际效果严格一致为了保证大家的 install.php 都能更新,我们在升级之前又加入了自动安全检查机制,帮助你检查相关文件是否已经更新完毕。请大家继续反馈你的想法和建议。沉寂了三年,为何突然更新?《关于最近的 Typecho 安全漏洞》,我猜是被致命bug逼的。为什么yodu之前的版本模板不兼容typecho1.1?因为模板functions.php文件夹中$time参数与新版本冲突,改成别的就好了。【部分人的模板可能也会有相同问题哈】为什么编辑器不支持html了?html标签需要使用三个叹号进行声明,如下图所示格式不过据说下次修订版可能会支持一大部分html标签暂时不想升级,怎么修复漏洞?删除install.php文件...

阅读文章
Yodu付费版免费送出一份?

如题所示付费版的模板将免费送出一份,加我QQ485868654,说明领取赠送模板即可。(已送出)为什么要送出一份,是博主良心发现了吗?答案是否定的!过程比较有趣,而且很正能量就在刚刚吧,某个小伙伴买了模板,然后跟我说了一堆语音,我其实没听语音的习惯,就让他打字来着。然后他说我是说,没打算用你的主题,只是纯粹支持一下你这个爱折腾的小盆友然后呢,我可不可以把主题送还给你,你可以在博客里面免费送出一份。说实话,我都佩服这种人,他做到了我做不到的事情,假如我很有钱我可能也不会这么做。这个小伙伴就是ihua在此希望得到此模板的人,能够抱着感谢的心情来使用,而不是想着这个人好傻之类的多余的东西。另外博主也送出一份吧,一共两份!博主送出这份需要回答个问题,说出博主心中中国最屌的发明?答案陶瓷或者瓷器,猜碗也算对,答对者桃先森,缩小范围者zerm获得10元优惠券(滑...

阅读文章
CommentFilter for Typecho强势魔改升级

插件原作者地址:http://www.imhan.com/archives/typecho_commentfilter_110/Hanny的这个评论过滤插件很给力哈,他最后的更新时间式2014-01-04,但是现在用着依旧很给力。但是呢,最近发现的评论都是,随机的名人名言/随机语句之类的,没有什么特征,广告往往都在昵称和链接上,举个栗子:这样的垃圾评论可能没办法屏蔽,所以本博主觉定自己魔改下。Hanny写的插件扩展性挺好的,所以改起来也不麻烦更新功能包括1,支持过滤评论者的昵称2,支持过滤评论者的链接插件原有功能1,过滤机器人评论2,IP过滤3,关键词过滤4,敏感词过滤5,非中文评论过滤评论过滤优先级顺序:自插件设置的功能自上而下,最上边的优先级最高下载地址CommentFilter1.2.0.tar.gz或者去typecho论坛下载:http://forum.typecho.org/viewtopic.php?f=6&t=10447项目地址:https://github.com/jrotty/CommentFilter-typecho更新部分设置截图凉了建议使用更好的插件《SmartSpa...

阅读文章
typecho-Highlight.js代码高亮插件

项目地址:https://github.com/jrotty/Highlightjs-for-typecho安装将Highlight文件夹传到typecho插件目录即可完成插件的安装其他说明该插件需要加载JQ,兼容instantclick.js,typecho1.0代码结尾会多出一行,typecho开发板正常,也就是说等typecho1.1正式发布了,这个软件就没这个bug了哈哈哈功能说明能让代码高亮,并且有行号使用方法如下面格式\```php <?php echo 'hello jrotty!'; ?> \``` 删除上边代码中的\过程本来是想用Highlight.js写个代码高亮插件,然而一搜发现typecho的作者joyqi早就写过了,于是我决定就拿他的这个直接改吧。原地址:http://forum.typecho.org/viewtopic.php?&t=4464首先名字改成了Highlight然后将Highlight.js的js和css都换成最新的了,删改了js,加入了行号显示功...

阅读文章
极简主题MINIMO-FOR-TYPECHO

基于Hugo的开源主题地址 https://github.com/MunifTanjim/minimo 移植的契机看到typecho论坛有人问能否移植,我还以为他就是作者呢,然后就用扒的方式移植了这个模板,然后我发现他并不是原作者哈,但是正好是开源主题也就无所谓了,原作者信息也保留了使用方法1,上传解压后的文件夹至模板目录,然后在程序后台启用模板2,在管理-独立页面处新建一个页面,标题和地址随便写,右下角页面模板选择HOME3,设置-阅读中站点首页处,使用刚刚建立的独立页面作为首页,然后勾选同时将文章列表页路径更改为/blog/(这个貌似默认就是勾选的,如果没勾选就手动选择上)下载地址去typecho论坛下载吧:http://forum.typecho.org/viewtopic.php?f=5&t=104...

阅读文章
typecho非插件实现回复可见功能

因为一般首页很少有全文输出的,而且一般隐藏内容都放在文章后面,所以就不需要处理首页的输出内容了。直接处理post.php就可以了,使用下面的代码<?php $db = Typecho_Db::get(); $sql = $db->select()->from('table.comments') ->where('cid = ?',$this->cid) ->where('mail = ?', $this->remember('mail',true)) ->limit(1); $result = $db->fetchAll($sql); if($this->user->hasLogin() || $result) { $content = preg_replace("/\[hide\](.*?)\[\/hide\]/sm",'<div class="reply2view">$1</div>',$this->content); } else{ $content = preg_replace("/\[hide\](.*?)\[\/hide\]/sm",'<div class="reply2view">此处内容需要评论回复后方可阅读。</div>',$this->content); } echo $content ?>替换模板post.php中的<?php $this->content(); ?>使用方法,在写文章需要隐藏部分内容时用以下写法(去掉@)[@hide]要隐藏的内容[/hide]css参考样式.reply2view { background:#f8f8f8; padding:10px 10px 10px 40px; position:relative }代码来自typecho论坛http://forum.typecho.org/viewtopic.php?f=6&t=4939&p=25945本文代码为了更好地适应各种模板,对原代码稍加了点...

阅读文章
typecho让注册的人直接可以发文章

让注册的人成为贡献者组修改文件 \var\Widget\Register.php 第 68 行: $dataStruct = array( 'name' => $this->request->name, 'mail' => $this->request->mail, 'screenName'=> $this->request->name, 'password' => $hasher->HashPassword($generatedPassword), 'created' => $this->options->gmtTime, 'group' => 'subscriber' );这个数组里面有个'group'应该就是了,将'subscriber'改成'contributor'就行了。让“贡献者”发帖直接通过无需审核方法参考:http://forum.typecho.org/viewtopic.php?f=4&t=7771修改 var/Widget/Contents/Post/Edit.php 的第 222 和 299 行(开发板在223和230行)将“editor”为“contributor”即...

阅读文章
让 typecho 生成JSON 输出

关键代码出处晴天博客:http://www.qt06.com/thread-3500.htm修改说明因为源代码输出的文章,不能一次性输出全部文章,而且会把置顶文章当成第一篇文章输出了。所以我修改了下,让其一次性输出全部文章,也可以通过修改代码钟的数字进行可控制数量的输出最终代码将下面代码添加到 typecho 头部模版的开头即可实现简单的 JSON 输出头部模版一般位于usr/themes/default/header.php可以查找到:<!DOCTYPE html>在这一行的前面添加下面的代码:<?php if (stripos($this->request->getRequestUri(), 'json')) { $arr = array(); $this->widget('Widget_Contents_Post_Recent', 'pageSize=10000')->to($archives); while ($archives->next()) { $a = array('title' => $archives->title, 'date' => $archives->date->format('Y-m-d'), 'content' => $archives->content, 'tags' => $archives->tags,'permalink' => $archives->permalink,); $arr[] = $a; } $this->response->throwJson(array("servererror" => "", "status" => 1, "message" => $arr)); } ?>添加完访问http://你的域名/?json即可看到效果补充说明放首页感觉影响效率,其实改代码放到独立页面模板上边也可以,比如新建个独立页面模板专门用来生成json,这样就不会影响了。还有就是代码钟的10000可以改成自己实际需要文章的数量,写10000只是为了方便输出全部文...

阅读文章
Typecho最全面的缩略图设置(非插件)

这可能是Typecho最全面的缩略图设置了,代码来自YODU模板内部提取,为了适合大众,所以删减了下没用的东西,不保证代码没有错误233。功能介绍看下面的功能列表吧别傻眼233①支持自定义字段,自定义缩略图,②支持显示配置好的标签图片,③有图文章显示缩略图,无图文章随机显示缩略图,④有图文章显示缩略图,无图文章只显示一张固定的缩略图,⑤有图文章显示缩略图,无图文章则不显示缩略图,⑥所有文章一律显示随机缩略图,⑦关闭所有缩略图显示优先级介绍关闭缩略图/所有文章一律显示随机缩略图 > 自定义图片 > 文章图片 > 标签图片 > 随机图片/固定图片补充说明缩略图优先显示文章中插入的图片,如果没有图片,就会去文章附件里提取图片,如果附件也没图片则根据优先级再去显示下级图片(大概吧)下面函数啥的已经将自定义字段写出来了,需要自定义缩略图,直接在文章底部自定义字段那里添加图片链接即可【完整的链接】文件配置说明1,请将下面代码中的yodu改成你的模板文件夹名字2,然后子里面建立个img文件夹,然后新建sj文件夹里面可以放随机图片1.jpg...99.jpg共99张,如果不想99张就需要把代码中的99改成你想要的数量【其实是自动判断的,只是判断失败就会启动默认的数量】3,在img文件夹中放入mr.png图片,作为没有文章图时固定一张的缩略图4,在img文件夹中新建文件夹tag文件夹,里面放入标签缩略名.jpg【缩略名最好别用中文】,这里的图片是文章没图但是有文章标签时,显示的图片,当然如果这个文件夹内你没有放入对于图片则显示随机图片什么的在functions.php中function themeConfig($form){}里面添加下面的控制代码$slimg = new Typecho_Widget_Helper_Form_Element_Select('slimg', array( 'showon'=>'有图文章显示缩略图,无图文章随机显示缩略图', 'Showimg' => '有图文章显示缩略图,无图文章只显示一张固定的缩略图', 'showoff' => '有图文章显示缩略图,无图文章则不显示缩略图', 'allsj' => '所有文章一律显示随机缩略图', 'guanbi' => '关闭所有缩略图显示' ), 'showon', _t('缩略图设置'), _t('默认选择“有图文章显示缩略图,无图文章随机显示缩略图”')); $form->addInput($slimg->multiMode());然后在添加个缩略图函数// 自定义关键字 function themeFields($layout) { $thumb = new Typecho_Widget_Helper_Form_Element_Text('thumb', NULL, NULL, _t('自定义缩略图'), _t('输入缩略图地址(仅文章有效)')); $layout->addItem($thumb); } /** 输出文章缩略图 */ function showThumbnail($widget) { // 当文章无图片时的默认缩略图 $dir = './usr/themes/yodu/img/sj/';//随机缩略图目录 $n=sizeof(scandir($dir))-2; if($n <= 0){ $n=99; }// 异常处理,干掉自动判断图片数量的功能,切换至手动 $rand = rand(1,$n); // 随机 n张缩略图 $random = $widget->widget('Widget_Options')->themeUrl . '/img/sj/' . $rand . '.jpg'; // 随机缩略图路径 if(Typecho_Widget::widget('Widget_Options')->slimg && 'Showimg'==Typecho_Widget::widget('Widget_Options')->slimg ){ $random = $widget->widget('Widget_Options')->themeUrl . '/img/mr.png'; //无图时只显示固定一张缩略图 } $cai = '';//这里可以添加图片后缀,例如七牛的缩略图裁剪规则,这里默认为空 $attach = $widget->attachments(1)->attachment; $pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i'; $patternMD = '/\!\[.*?\]\((http(s)?:\/\/.*?(jpg|png))/i'; $patternMDfoot = '/\[.*?\]:\s*(http(s)?:\/\/.*?(jpg|png))/i'; if (preg_match_all($pattern, $widget->content, $thumbUrl)) { $ctu = $thumbUrl[1][0].$cai; } //如果是内联式markdown格式的图片 else if (preg_match_all($patternMD, $widget->content, $thumbUrl)) { $ctu = $thumbUrl[1][0].$cai; } //如果是脚注式markdown格式的图片 else if (preg_match_all($patternMDfoot, $widget->content, $thumbUrl)) { $ctu = $thumbUrl[1][0].$cai; } else if ($attach && $attach->isImage) { $ctu = $attach->url.$cai; } else if ($widget->tags) { foreach ($widget->tags as $tag) { $ctu = './usr/themes/yodu/img/tag/' . $tag['slug'] . '.jpg'; if(is_file($ctu)) { $ctu = $widget->widget('Widget_Options')->themeUrl . '/img/tag/' . $tag['slug'] . '.jpg'; } else { $ctu = $random; } break; } } else { $ctu = $random; } if(Typecho_Widget::widget('Widget_Options')->slimg && 'showoff'==Typecho_Widget::widget('Widget_Options')->slimg ){ if($widget->fields->thumb){$ctu = $widget->fields->thumb;} if($ctu== $random) echo ''; else if($widget->is('post')||$widget->is('page')){ echo $ctu; }else{ echo '<img src="' .$ctu. '">'; } }else{ if($widget->fields->thumb){$ctu = $widget->fields->thumb;} if(!$widget->is('post')&&!$widget->is('page')){ if(Typecho_Widget::widget('Widget_Options')->slimg && 'allsj'==Typecho_Widget::widget('Widget_Options')->slimg ){$ctu = $random;} } echo $ctu; } }前台index.php里面添加显示图片的代码<?php if($this->options->slimg && 'guanbi'==$this->options->slimg): ?> <?php else: ?> <?php if($this->options->slimg && 'showoff'==$this->options->slimg): ?><a href="<?php $this->permalink() ?>" ><?php showThumbnail($this); ?></a> <?php else: ?> <img src="<?php showThumbnail($this); ?>"> <?php endif; ?> <?php endif; ?&g...

阅读文章
CommentToMail插件评论模板

我现在用的模板是我刚使用typecho时用的模板,当时在某博客上找到的Tokin邮箱评论模板,然后就用上了,后来因为改用多说就放弃使用CommentToMail了。因为多说意外死亡,所以在次使用邮箱评论提示插件,然而当年的邮箱提示模板已经找不到了,也懒得自己写,于是翻起来了当年刚开始做博客时的邮件,还真的找到了带这个模板的邮件,于是简单的扒了下来。本来因为这东西本身就不是我写的,所以一直也没有分享,但是私自要的人不少,有些烦了,故分享之guest.html<div style="background-color:white;border-top:2px solid #12ADDB;box-shadow:0 1px 3px #AAAAAA;line-height:180%;padding:0 15px 12px;width:500px;margin:50px auto;color:#555555;font-family:'Century Gothic','Trebuchet MS','Hiragino Sans GB',微软雅黑,'Microsoft Yahei',Tahoma,Helvetica,Arial,'SimSun',sans-serif;font-size:12px;"> <h2 style="border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;"><span style="color: #12ADDB;font-weight: bold;">&gt; </span>您({author_p})在<a style="text-decoration:none;color: #12ADDB;" href="{permalink}" target="_blank">《{title}》</a>的评论有了新的回复</h2> <div style="padding:0 12px 0 12px;margin-top:18px"> <p>时间:<span style="border-bottom:1px dashed #ccc;" t="5" times=" 20:42">{time}</span></p> <p>你的评论:</p> <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0">{text_p}</p> <p><strong>{author}</strong>&nbsp;回复说:</p> <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0">{text}</p> <p>您可以点击 <a style="text-decoration:none; color:#12addb" href="{permalink}" target="_blank">查看回复的完整內容 </a>,本邮件为自动发送,请勿直接回复,如有疑问,联系我<a style="text-decoration:none; color:#12addb" href="mailto:{contactme}" target="_blank">{contactme}</a>,欢迎再次光临 <a style="text-decoration:none; color:#12addb" href="http://qqdie.com" target="_blank">QQ爹博客 </a>。</p> </div> </div>owner.html<div style="background-color:white;border-top:2px solid #12ADDB;box-shadow:0 1px 3px #AAAAAA;line-height:180%;padding:0 15px 12px;width:500px;margin:50px auto;color:#555555;font-family:'Century Gothic','Trebuchet MS','Hiragino Sans GB',微软雅黑,'Microsoft Yahei',Tahoma,Helvetica,Arial,'SimSun',sans-serif;font-size:12px;"> <h2 style="border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;"><span style="color: #12ADDB;font-weight: bold;">&gt; </span>({author})在<a style="text-decoration:none;color: #12ADDB;" href="{permalink}" target="_blank">《{title}》</a>创造了新的评论</h2> <div style="padding:0 12px 0 12px;margin-top:18px"> <p>时间:<span style="border-bottom:1px dashed #ccc;" t="5" times=" 20:42">{time}</span></p> <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0">{text}</p> <p>评论者"{author}"邮箱为:</p> <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0"> <a href="mailto:{mail}" target="_blank">{mail}</a></p> <p>评论者"{author}"其他信息:</p> <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0">IP:{ip},状态:{status},[<a href='{manage}' target='_blank'>管理评论</a>]</p> <p>您可以点击 <a style="text-decoration:none; color:#12addb" href="{permalink}" target="_blank">查看回复的完整內容 </a>,欢迎再次光临 <a style="text-decoration:none; color:#12addb" href="http://qqdie.com" target="_blank">{siteTitle}</a>。</p> </div> </div>提示:上述代码部分地方需要自己改成自己的地址,别问原因,因为我懒,还有就是这代码原作者是Toki...

阅读文章
YoduPlayer背景音乐播放器发布

YoduPlayer继YoduBGM之后的另一款支持instantclick的背景音乐播放器。特点0,支持自定义播放器css。1,支持使用pjax或者instantclick的模板。2,内置多种播放器皮肤,可自由选择3,可设置自动播放,手机端自动隐藏等4,无JQ[早期打包版本无需jq],要求浏览器ie9+5,有上一曲,下一曲,暂停/播放,封面显示等功能,封面播放时会旋转。6,针对typecho的Yodu主题模板字体方面做过处理,减少多余字体加载,2.2.2之前的版本支持针对模板变色功能,2.2.2版本之后需要根据需求手动选择播放器皮肤。7,歌曲列表功能支持,正在播放的歌曲在列表中标注支持。小问题1,与yodubgm应该会有冲突,建议他俩之间只是用一个。2,与其他的模板样式上可能会遇到冲突。3,歌曲虽然可以解析网易云音乐,但不保证不会出现部分音乐无法播放的可能性背景因为前天有人吐槽YoduBGM太过简洁,于是昨天中午重写了个样式,js代码部分抄自己之前写的yodubgm的代码,音乐播放时间格式化借鉴与Qplayer,其余的都是现写的,边百度边写233。本来没想做成插件,想内置到模板里,但是貌似不利于传播,于是刚刚封装进了插件。测试有部分模板可能会出现错位等现象……截图下载地址https://github.com/jrotty/YoduPlayer更新记录2018,05,28默认音量调低至18%,默认本地歌曲,多皮肤机制公开手动选择,不在支持yodu模板自动变色功能,请手动选择皮肤,版本号2.2.22018,02,25新增随机播放功能,简单优化,yodu定制皮肤会根据模板自动勾选2017,12,10封面图404时,自动将内置图片补上去假装图没挂,播放器外面点击关闭抽屉,优化yodu模板的定制皮肤,版本号1.8.02017,12,06增加默认音乐与封面图【当音乐列表为空时默认填充】(内置音乐只要非盈利性质则不涉及版权问题),版本号1.7.52017,10,09歌曲列表正在播放的歌曲加入样式标注,发布测试版1.7.32017,10,08加入了歌曲列表功能,发布测试版1.7.02017,10,01修复部分浏览器抽屉失效问题,增强浏览器兼容性2017,09,27部分浏览器进度条错位问题修复2017,07,27修正进度条定位问题,版本号1.3.0。2017,07,25解决部分模板的字体冲突问题2017,07.10重新加入修复版的网易音乐获取api,版本号1.2.0。2017,06.12支持显示音乐播放进度条,删除已经失效的网易云api,版本号 1.1.0。2017.04.16修复上下曲切换播放封面不旋转问题,修复列表播放不循环问题,版本号1.0.1。2017.04.15加入自定义css,加入yodu主题模板定制化方案,版本号为1.0.02017.04.14晚修正css使其兼容更多模板,版本号为0.6.02017.04.14上传第一个版本,版本号为0.5...

阅读文章
Typecho1.0修改后台地址有bug

今天翻到一篇2012年的《Typecho修改后台》文中提到前几代typecho的一个问题,文章结尾处说0.9版的typecho修复了,但是我发现typecho1.0版本依旧存在这个问题。那么是什么问题呢?问题还记得我上次提到的《typecho修改后台地址》的文章吗,这个bug就是你即使修改了登陆地址通过它也能找到你真正的后台地址。具体怎么做呢?非常简单,在你想查询的网站的地址后面加上/index.php/action/login/。例如http://你想查询的网址/index.php/action/login/这样就会自动跳到真正的后台地址。因为我用了Github上的typecho1.1的那个版本所以对我无效哈,我已经拿一个群友实测过了,typecho1.0确实存在这个问题。修复方法你可以跟我一样去guthub下载1.1的版本:https://github.com/typecho/typecho/releases或者按照下面的方法修复进行修改2个文件:typechovarWidgetDo.php (line26)typechovarWidgetOptions.php (line208)将以上2个地方修改为一样的参数,然后再去试一试index.php/action/login,发现已经不存在该问题。参考文章:https://itlu.org/articles/2425.html参考文章:https://www.bstaint.net/archives/22...

阅读文章
1/2