手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

typecho 插件:搜索来源关键字高亮

这个typecho插件也是前两天我发布的,我因为没办法测试,所以一直不知道原来我犯了一个最大的错误(单词写错了,我把highlight我写成了hightlight),所以。。。一直无法显示成功,羽中提出了这个问题后,我好好的看了一下源码,才发现这个不是bug,但是是错误的代码。

郁闷啊。太丢人了。

最后再说明一下插件的功能:

0.1.2 増加网站内部搜索关键字高亮

0.1.1

对于从百度、google、yahoo搜索来的链接中的关键字进行高亮,仅有一种黄色背景。因为他本来也是我作为一个试手的作品。

不过,如果真要使用,请还需要手动在您的CSS中加上:

<style type="text/css">.searchword { background-color: yellow; }</style>

也就是说,你可以自己修改searchword这个CSS。如果您不愿意添加这个样式,你可以把我的代码中关于style的注释去掉就可以了。

请下载更新,谢谢:

0.1.2 highlightsearchkeywords.rar 【注意,如果更新此插件,请务必更新内容分页SplitArchivePage 插件到0.1.5版本或以上】

0.1.1 highlightsearchkeywords.rar

Tags: typecho, 插件, 关键字, 高亮

typecho 文章附件的小BUG

说实话,我不知道这是BUG还是新功能。【最后鉴定是浏览器的一个小BUG,不是typecho的BUG,但对于附件,我还是提出了我个人想法】
在0.8版本中,如果你选择新建一篇文章,同时选择添加一个附件。然后提交表单新增文章,重新打开后,你会发现文章并没有附件。打开数据库,发现文件已经上传,而且ID还在文件ID前面,只是parent_id就是0了。
然后再选择新建一篇文章,这个没有归档的附件就显示在新文章的附件列表里。不管是是否选择插入,反正这个附件已是属于这篇 新文章了。
 
在此,我猜测这应该算是一个BUG,程序开发人员考虑到了附件上传的不可靠性,所以选择了先上传图片,但是其实对于博客来说,文章应该是更重要的。所以,完全是可以等文章写完再上图片。而不是直接就把图片插入数据库,然后在更新的时候无法插入(wordpress对于未归档的图片,都可以通过插入媒体来进行重插入,而typecho没有插入媒体这个选项,因此,图片就处于永远无法插入的情况了)。
 
当然,这只是纯理论研究(通过查看数据库ID的顺序得知),真相需要查看代码方可了解。

------鉴定----
说明:上述过程在Firefox下产生(开启flash block情况,将本地路径加入whitelist后一切恢复正常),IE下一切正常。搜狗浏览器选择高速模式无法登录(兼容模式方可登录,不过兼容模式就是IE核心,因此未做测试)
 
因此最终结论为:程序插入附件的流程操作一切正常,只是偶尔在一些插件启用时造成未知错误而已。出现我这种情况,应该是flash的关系,是它没有返回正确值,导致表单在提交时,调用$this->attach($cid)方法时没有获取到附件情况。而新建文章的时候,对于parent为0的附件,好象程序会强制插入新文章,这一点不敢芶同。
在file_upload.php中就是这样写的:
PHP代码
  1. if ($cid) {  
  2.     Typecho_Widget::widget('Widget_Contents_Attachment_Related''parentId=' . $cid)->to($attachment);  
  3. else {  
  4.     Typecho_Widget::widget('Widget_Contents_Attachment_Unattached')->to($attachment);  
  5. }  
我还是觉得这种事情应该交由用户处理,而不是在新建文章的时候被强制插入。这种情况如果出现在多人协作的时候就会让人受不了了吧?因为他在执行Unattached的execute方法时,where条件中并没有userid。所以A上传的图片,极有可能会被B强制使用。(虽然机率不大,但,难保会出现这种情况。)

Tags: typecho, bug, 文章, attachment

typecho 插件:内容分页SplitArchivePage

typecho 插件之:内容分页SplitArchivePage
当你的文章内容很长时,可以考虑用此插件来给文章进行简单的分页

 

//原本考虑主动在post和page页插入分页符的,经友情提示,这些可以去除。
//因为如果不这样,我要考虑很多东西,比如richEdit编辑器,但这种编辑器太多了。所以直接根据友情提示而放弃主动插入
//如果你不用richEdit,这两行注释可以打开。
//        Typecho_Plugin::factory('admin/write-post.php')->content = array('SplitArchivePage_Plugin', 'render');
//        Typecho_Plugin::factory('admin/write-page.php')->content = array('SplitArchivePage_Plugin', 'render');

 

0.1.5 原有的程序只支持一个GET变量,现在已修正,只要是GET变量都支持【如果使用了typecho 插件:搜索来源关键字高亮0.1.2版本,请务必更新到此版本】
0.1.4 修正了Rewrite规则下,还会自动加上index.php的BUG,目前在Rewrite规则下去除了index.php
0.1.3 修正了内容页中如果没有插入分页符内容不能显示的BUG(疏忽)
0.1.2 基本功能实现

下载地址为:

【0.1.5】splitarchivepage.rar

【0.1.4】splitarchivepage.rar

【0.1.3】splitarchivepage.rar

Tags: typecho, splitarchive

typecho 插件开发(一)

看typecho第二天了,不过我还是没有仔细查看源码,只是根据一些其他插件的应用来写自己的应用。

比如,看了Akismet插件后,知道了 Typecho_Widget_Helper_Form 对象还有一个 addRule 方法,用来对数据进行验证。

昨天看了一下源码,并对应我昨天的方法了解Typecho页面中可以被注入对象的地方,在插件的activate中写了两个方法,可以让插件在全局被应用。

        Typecho_Plugin::factory('index.php')->begin = array('DbBackup_Plugin', 'backup');
        Typecho_Plugin::factory('admin/common.php')->begin = array('DbBackup_Plugin', 'backup');

嗯。是准备考虑备份的。前后台都有。正在尝试。如果并未按照我预想的情况运行的话,可能只考虑前台触发了。

加了三个参数:

        $rate = new Typecho_Widget_Helper_Form_Element_Text('rate', NULL, '1', _t('备份频率'),_t('备份数据的频率(最小单位为天,请使用整数)'));
        $form->addInput($rate->addRule('isInteger',_t('请输入整数')));
        $email = new Typecho_Widget_Helper_Form_Element_Text('email', NULL, '', _t('备份发送到'),_t('发送邮件地址。'));
        $form->addInput($email->addRule('email',_t('请输入正确的邮箱地址')));
        $lastbackup = new Typecho_Widget_Helper_Form_Element_Text('lastbackup', NULL, '', _t('上次备份时间'),_t('无需设置,由程序自动生成'));
        $form->addInput($lastbackup);

但是isInteger,这个验证方法是验证is_numeric,其实我是希望是一个正整数。现在,先将就一下下喽。离完成还早,顺便附上两个昨天写的垃圾插件,敬请测试(主要是官方论坛我注册后收不到邮件,所以无法登录。过会我再换个邮箱试试)

文章分页:已经删除,请移步typecho 插件:内容分页SplitArchivePage 进行下载 【演示地址

高亮搜索引擎来源关键字:highlightsearchkeywords.rar 【这个,在这现在这个博客上测试成功,但是在typecho上没有办法测试,因为没有数据,google搜索不到。。。】

Tags: typecho, 笔记, 插件

了解Typecho页面中可以被注入对象的地方

关于插件这个问题,可以查看这篇JianHua Zhang的Typecho阅读笔记三:插件机制,我想说的就是链接文章里的最后一句。
在Typecho_Plugin的__call魔术方法里把当前设置到的component全部打印在页面上,对于插件开发人员来说是一件非常好的事情,因为这样,你可以了解到,有哪些地方是你可以注入你的插件对象的。

大小: 156.17 K
尺寸: 407 x 376
浏览: 1985 次
点击打开新窗口浏览全图

看左上角(看不清的话,请点击看大图)。

Widget_Archive:select
Widget_Archive:handleInit

象这两个,代表了你在插件中就可以写上以下代码来进行注入。

Typecho_Plugin::factory("Widget_Archive")->select = array("插件类名","该类中的方法");

是不是很方便 ?打开每一个页面,你都可以看到类似的代码,有logo,有content,contentEx之类的。了解了这些,在相应的位置上写上你想要的效果,是不是很爽?

顺便,你需要查看一下http://docs.typecho.org/develop/widget。也可以了解一些代码是如何被调用(文中有一点点错误,在看的时候Typecho::widget,应该是Typecho_Widget::widget("xxx"))

Tags: typecho, 笔记, 插件注入