By Charles on 二 23rd, 2010 | 14 Views
thickbox是jQuery的插件,可以在页面上显示一个模拟出来的窗体,可以是对话框,AJAX内容,或者仅仅用来展示图片。其使用非常方便,只要在页面中引入了thickbox.js和thickbox.css,就可以通过设定A,INPUT,AREA元素的href或者alt属性,就可以使得其功能得以实现。具体的文档,可以参见这里。
WordPress在脚本库中添加了thickbox的脚本,调用起来格外地简单。所以我就选用了这个作为WP插件后台管理界面中,用户交互对话框的解决方案。在这里,介绍一点我在开发过程中的经验。如果需要在thickbox弹出窗体退出时执行一些动作,那么比较好的办法是向#TB_Window的unload事件绑定动作,thickbox在退出时会触发该动作,该动作是在tb_remove()函数中触发的。
向这个事件绑定动作的方法有点小窍门,因为页面初始化完成后,文档Dom中并不包含#TB_Window元素,只有在thickbox被触发后,该元素才添加到Dom中。经过阅读源代码后,我发现,可以在触发thickbox的对象的blur事件中,向#TB_Window的unload事件绑定动作。示例代码如下:
- <a id="open-dialog" href="#TB_inline?height=300&width=400&inlineID=dialog">Click Here</a>
- $('#open-dialog').blur(function(){
- $('#TB_Window').unload(function(){
- //do something here
- });
- });
Posted in jQuery | Tagged code, develop, jQuery, usage
By Charles on 二 16th, 2010 | 12 Views
WP的插件在开发完成后,会在用户的服务器上运行,而用户的服务器环境基本上可以用千奇百怪来形容。开发过程中,在本地运行得好好的插件的,一旦安装到用户的服务器上,也有可能变得无法运行。
所以,作为WP插件的开发者,最好不要对插件最终的运行环境做任何假设。而且,最好能够在插件被启用的时候,进行必要的检查,给用户以提示,对于自己没法兼容的问题,应该明确指出,避免用户遭遇不必要的麻烦。
在我个人的WP插件开发过程中,我主要遇到的问题,基本上都是PHP相关的问题。 Keep reading »
Posted in Plugins Develop, WordPress | Tagged develop, plugins, WordPress
By Charles on 二 15th, 2010 | 15 Views
插件的后台管理页面的主要功能是协助用户设定插件运行时参数,一般都需要用户进行交互,这就少不了需要客户端脚本的参与(主要是js脚本,当然还有配套的css样式表)。
WP的后台本身就已经加载了许多的脚本,包括各类类库和基础功能的脚本。过多的脚本文件引入,会增加HTTP请求,增加流量,拖慢速度。好在,WP的后台已经采取了相当多的措施,来管理后台加载的脚本。首先是用wp-dependency管理依赖关系,用load-scripts来压缩、并加载脚本,使得各种类库被合并到同一个文件中进行加载,节省了HTTP请求数量和流量。 Keep reading »
Posted in Plugins Develop, WordPress | Tagged develop, plugins, WordPress
By Charles on 二 6th, 2010 | 1 View
man是Linux下最最常用的命令之一,用来显示某个命令的手册。
一般在命令行下,manpages通过粗体和下划线来标记关键信息,有多种方法来使man命令显示彩色的manpages。
man是调用less来显示manpages的,可以更换这个程序,使用most来显示,这是一个方法。但是长期以来使用less,已经习惯,most又有一套操作方法,后来我又发现了一种方案,非常简单,只要通过在bashrc中设定环境变量,就可以高亮彩显manpages,非常方便。
设定方法如下,在.bashrc末尾添加如下几行:
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
如此,即可以为manpages添加红绿两色,虽然不多,但是远好过了单调的黑白页面。
Posted in Linux | Tagged color, Linux, man, manpages, usage
By Charles on 一 20th, 2010 | 18 Views
从Word97开始就用上MS Word了,直到Word2007,一晃眼也用了10多年了,可惜嘛,依旧是那个烂水平。排版个学位论文啥的,就是我水平的极限了。Word是一款强悍的编辑排版软件,可惜,我实在钻研精神有限,实在惭愧。现在又到一年学位论文时啊,想着今后漫长的日子里,要憋好几十页的文章,一种孤独寂寥的感觉就涌上心头,实在是不甘心,这就又想起来,有一款排版效果堪比Word,搞不好还略有小胜的软件,我还完全没有涉足过,这就是LaTex了。学习新东西给人的那种新鲜喜悦,可以好好中和一下憋论文的悲苦,于是我踏上了LaTeX之旅。
LaTex一般指的就是LaTeX 2e,是一个在TeX基础之上编写的宏包。关于TeX的起源,还有一段佳话,我就不赘述了。乍一接触LaTeX,无论是由于任何原因,也免不了要把这个软件和Word相比较,我同样不能免俗。要说二者的差异,最大的地方还是理念上的差异了,关于这种差异,我同样不想赘述。我只谈体验。LaTeX无论是学习,还是编写文档,初上手给人的感觉就两个字,痛苦。
Keep reading »
Posted in 工作相关 | Tagged latex, opinion, usage
By Charles on 十一 24th, 2009 | 84 Views
我在CSDN上分享了很多东西,一直想把那个列表也在博客上罗列一个,一直就没有付诸于行动,昨天一发狠,终于弄了。
等于昨天几个小时,今天几个小时,搞出了一个小插件。就是右侧的一个小挂件。点上去就会链到CSDN的下载页面。
算是我把一年前的债还了。真开心。
插件里面没什么技术含量,就是小小调用了一下Google Feed API。
做这个插件,也引发了我一个思考。
能否在页面的head部分,就知道这个页面会装载哪些Widget呢?昨天折腾了半天,也没有解决这个问题。
解决的好处是显而易见的,现在的Widget,大多数都需要js来辅助了。但是很多高端的主题有数个sidebar,每页不同,如果Widget开发者,为了符合Web标准,把js放在head部分,就不得不无差别地在所有页面插入代码了。那样的话,添加一个Widget就会带来浪费的流量,页面速度也会被不断拖慢。
当然有个替代方案是把代码放到页面的footer部分,不过,个人以为,只要脚本出现在了Html body里面,那么直接嵌入到Widget中和hook到footer上,其实没什么本质区别,都破坏了行为和数据分离的原则。
这也是无奈之举了。谁叫WP设计成了sidebar.php执行前,无法知道页面会载入哪个sidebar这种结构呢?
当然,不排除还有更好方法的可能,如果知道的网友还望不吝告知。
Posted in Plugins, WordPress | Tagged DIY, plugins, WordPress
Most Commented Posts