2008年5月12日星期一

升级WP旧模板,让它支持Widgets

正如大家所见,我使用的模板已经是很旧很旧的了,是以前在 1.5还是1.0系列的默认模板之上,简单修改而来的。没有选用三栏布局,因为我喜欢用稍微大一点的字体,三栏布局对我来说侧边栏东西太多,加上文章长了以后侧边栏的下面空白很大。不过旧模板自然也就没有

No Sidebars Defined  You are seeing this message because the  you are currently using isn't widget-aware, meaning that it has no sidebars that you are able to change. For information on making your  widget-aware, please follow these instructions. 

刚开始我还能忍受,上没有的东西俺自己手工加上,不过用上Simple Tags插件之后,感叹到了插件和Tags的强大, Post很方便,可 Tags就是出不来,探查一番,原因应该就是我的模板不支持。所以忍不住了,模板可以不变样,但不能不升级,我就动手把它改成支持的吧。

刚才的提示中已经给出了修改指引的链接,首先把模板中的改成ul形式的, -> (.),第一行的ul换成div即可:

 

看了一下,对外观没有太大影响,css应该是用id来引用的,不过还是需要调整一点css:

/* 启用样式有些变化,在这里修正 */ # {list-style: none;} # li ul li:before {     content: "\00BB \0020"; } # li ul li {     margin-bottom: 5px; } 

然后还是修改模板文件,加入是否有动态的检查、如果有就调入的代码:

 

代码一共就3行,前面加2行,后面加一行,就是个简单的判断而已。别着急,现在还没有完成,还有最后一步。

在模板目录下,比如我的就是wp-content/themes/fwolfs-blog这个目录,创建一个新文件functions.,内容就4行:

php if ( function_exists('register_sidebar') )     register_sidebar(); ?> 

好了,现在再刷新Design -> 页面,就有内容了,我的旧模板现在也支持了。

同样的,Design -> 页面中也会多一项可编辑内容:

 Functions (functions.) 

PS1: 如果要添加多个,需要模板的支持,也就是模板中制定需要几个,在Design中就能管理几个(register_sidebars(n),n就是数量)。

PS2: 如果想在的Text里面内嵌代码,比如设定只有首页才显示BlogRoll,那么需要安装PHP Code Widget插件,并使用 Code代码块。直接在原来的Text中写代码的话,会原封不动的被当成代码输出,昏死。

PS3: 一切都折腾好了, Tags功能还是得手工添加代码块到中:

php if (is_tag()) {     st_related_tags();     st_remove_related_tags(); } ?> 
Tags: , , , , , , ,

Related posts

Source: http://www.fwolf.com/blog/post/402

2008年5月6日星期二

新的广告交换、51.la统计和web标准

标题又有点风牛马不相及,不过还是有那么一点点关联的,再说了,一篇文章的内容相对广泛,不仅有利于SEO,而且还会给胡乱转载者以困惑,同时还不会干扰正常转载、引用的朋友,嘿嘿。

首先说今天我第一次见到的网站广告交换–BlogUpp,感觉很新颖,很方便,就顺手也弄了一个,放在右边的广告下面,感觉特点如下:

  1. 不用注册,直接输入网址,就得到一段代码,扔网站页面上就行了。
  2. 交换广告是竖向排列的两个,固定的大小和布局,至少目前没得选择,不过适合blog这种右边大条空白的情况。
  3. 加载的时候,先显示文字,然后加载图片,当然文字和图片都是从每个网站上攫取出来的,中文支持良好。
  4. 正常显示广告的情况下,一般是显示图片,鼠标滑过的时候,切换为文字内容,既用图片吸引了眼球,又能让读者根据文字内容来了解是否真的需要打开浏览,应该说这一点我觉得是它设计最好的地方。
  5. 提供两种形式的代码,一种是iframe另外一种是style+div,我鸡蛋里挑点骨头:第二种里面的="_blank"这种用法是不符合标准的。

之所以对标准如此敏感,是因为下午刚刚为51.la统计代码无法通过验证而头疼(验证的不是本blog的页面,选用dtd是 1.0 Strict)。先来看一下这段代码吧:

 <>="_blank">noscript> 

w3c的validator一检查,错误就出来了,主要有两处,一处比较简单:

document type does not allow element "a" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start- . 

就是说a不应该出现在这里,它属于inline元素,应该被包含在block元素中云云,img也是一样,解决方法是用p或者div元素来包含他们就可以了。

而第二个不兼容就比较棘手了:

there is no attribute "" . 

也就是`="_blank"这种用法是标准不允许的,这个问题着实难解决了点。

有朋友说了,你不会用来实现么?的确,网上有解决方式是先赋予a链接rel=xxx属性,然后用判断属性再脚本运行时添加`="_blank"属性,或者直接用打开脚本的也算一种方法。

可是各位,你们没有发现,这个链接是在<>标签中么?这个标签中的代码只有在浏览器不支持的时候才会显示,试问,在不支持的浏览器中,刚才的解决方案还能用么?

最终,我也没有更合适的解决方案,只有把`="_blank"去掉,然后在旁边注上一行字:

<>      noscript> 

我想,目前也只能用这种方式解决了吧,好在不支持的浏览器、又是人在用的(非机器人),应该不多。

其实,51.la代码的兼容性之所以被发现,之所以不得不改,也不是我吹毛求疵,而是用了之后,它的语法检查给发现的(够强大的),实在是不习惯看到一对error和warning在下面待着,"被迫"修改代码使它们更加"标准",我想这也是的一个优点吧。

PS: 在BlogUpp缩图中我网站的首页太难看了,一个图片也没有,hmm…,有没有好一点的wordpress两栏布局模板,突出文章内容的?偶也换换?

Tags: , , , , , , , , ,

Related posts

Source: http://www.fwolf.com/blog/post/401

选择Eclipse PHP Development Tools(PDT)作为PHP开发工具

vi虽然轻巧,但一来在图形界面下没有必要一定用纯cli的东东,二来在项目开发的环境中vi有些吃力。 Studio呢一直用着他的keygen也挺不好意思的,功能上我只能说是一般,再一般不过了,就是个图形化的编辑器,带代码提示什么的辅助功能,最有用印象最深的居然是选择多行然后用TAB整体缩进。

所以,尝试着把开发工具更换为PHP Development Tools(PDT)的大名早有耳闻,只是从来不用java,也就没有摸过。早在2004年底作项目的时候见同事用过,慢就一个字,强也是一个字。至于为何不选PHPEclipse,倒也不是听到网上一边倒的声音,而是我实在是有点不习惯它的复杂,相比之下刚出炉不久功能不全的PHP Development Tools(PDT)正和我意。

我是从官网下载的-all-in-one-R20080103--gtk.tar.gz,有点像懒人包,直接解压就能用了,功能基本上都配置好了。额外装了几个插件,都是用系统自带功能Help -> Software Updates -> Find and Instal安装的:

基本上就够我用了。这种安装方式实在是很方便,能够后台运行更方便。

配置的时候麻烦一些,其实到后来我也没弄太明白,本来想用XDebug的,不过上官网一看基本上只有for windows的二进制包,下的多半还得自己编译(网上的例子也多半是基于windows的环境,很无奈),就转向了。谁知官网上这个Debugger的链接也不好找,产品列表里根本就没有,现在这个更新/安装地址已经忘记是从哪里搞来的了,不过能用。

能用了,不过只限于 Script运行方式,如果要完整的web测试的话,还得去修改.ini加 Debugger的扩展,懒得弄了,处理得当的话需要的时候不多,一般print_r/var_dump也基本够用了。

PHP Development Tools(PDT)的编辑区比 Studio要"小"一些,因为界面的边框太"厚"了,Tab也有点大,可以在界面设置中取消圆角,能省点地方。编辑区小的问题不要紧,Ctrl-M能放到最大,加上其它窗口可以缩起来,用的时候调出来,用完自己还会缩回去,所以总体界面上还是要比 Studio要好用。

功能上,最喜欢的就是无时无刻不在的语法检查,可以迫使我们摒弃掉一些坏毛病。不过这个功能和模板合不来,像我原来模板文件都是.html扩展名的,这下可遭殃了,一大堆无法处理的错误信息。中间试过PHPEclipse,它支持模板,不过是另外分配了一个编辑器,同样也只能认.tpl扩展名,模板编辑功能几乎没有,就剩下一个模板语法高亮显示,居然还不像其它编辑窗口一样能够调整背景(我习惯把编辑区背景设置为#CCE8CF,节省眼力),索性不用了。费点功夫把所有模板都改成.tpl扩展名的,然后当一般纯文本处理,也没有什么不爽的,js和css基本上都是在单独的文件中,有相应的编辑器,手工写点html code也无妨。

不过还是推荐一个PHP Development Tools(PDT)中的for 的插件smartypdt,主意虽好,但程序非常不成熟,在PHP Development Tools(PDT) 3.3上基本上没法用,先关注一下,期待以后能成熟起来吧。

最后,总体感觉虽然速度依然不快,尤其是启动速度,尤其是我调用远程主机上的项目文件,但其强大的功能足以掩盖这些缺点,还是那句话,谁用谁知道~~这几乎是我用过的可操作性最强的Java软件了。

参考

Tags: , , , , , , , , ,

Related posts

Source: http://www.fwolf.com/blog/post/400

Gregarius编辑feed时中文乱码的解决

编辑feeds的时候,中文总是乱码(版本r1787),其实解决方法很简单的:

找到admin/channels.这个文件,找到第900行,修改为:

//$title = htmlentities($title,ENT_QUOTES); $title = htmlspecialchars($title, ENT_QUOTES); 

这个是标题乱码的修正,再向下翻到Description部分,大概在988行左右,修改为:

// Description //$descr = trim(htmlentities(strip_tags($descr), ENT_QUOTES)); $descr = trim(htmlspecialchars(strip_tags($descr), ENT_QUOTES)); 

这样就ok了。

原因很简单,htmlentities这个函数在转义到html标记的时候,会吧中文字符中一些字节也进行了转义,形成了乱码,而htmlspecialchars这个函数只转义特定的5个字符,不会存在这种情况。

之后,单引号和双引号都能输入了,但是反斜杠\仍然是不能输入的,应该是在输入处理的时候过滤掉了,或者进行了其他的转换,不过一般也用不到,就不改了。西文环境用户的处理习惯就是和我们不大一样啊。

参考

Tags: , , , , ,

Related posts

Source: http://www.fwolf.com/blog/post/399

Firefox3书签中的Tags存哪儿了?

电脑岁数大了是不行,即使装上了号称速度有很大改观的Firefox3,我的老爷机也没快到哪儿去,这还是在一大票插件都由于不兼容被咔嚓了之后,唉。

不过Firefox3还是有些不错的新功能的,比如网址栏中的"星星",和Gmail里面的哪个很像吧,不知道是谁家的专利,这个星星挺有意思,当你浏览到觉得不错的网站时,点一下星星就可以收藏起来了,默认是在书签的Unfiled Bookmarks文件夹中,以后可以慢慢整理;点两下星星会弹出窗口让你选保存位置,并可以输Tag。

Tag可以说是Web 2.0的标志性特征了,也是组织和查找信息的一种有效方式,所以我就很感兴趣,这个Tags被Firefox3存到哪个文件里去了?Tag的存储方式和Tag Cloud的算法我很感兴趣,也想看看FF的解决方式。

一般Firefox会把书签保存在bookmarks.html文件当中,不过Firefox3改进了,把书签放到了sqlite数据库中,文件名就叫做places.sqlite。这个文件在Firefox3运行时会以独占方式打开,关闭FF后才能用sqlite3打开。

起初没想到有什么难处,直接看schema,结果仔细的读了一遍也没发现哪些地方有tag的踪影:

  • moz_anno_attributes 注释的属性,没几行数据,不知道干啥的
  • moz_annos 目前是空的,应该是什么的注释
  • moz_bookmarks 书签项目
  • moz_bookmarks_roots 书签项目的根网站集合,新安装FF的还没数据呢
  • moz_favicons 网站图标favicon的位置
  • moz_historyvisits 哪个网站你浏览了多少次,偶的隐私啊。。。
  • moz_inputhistory 输入历史?暂无数据
  • moz_items_annos 书签的注释,也就是那个"Description:"
  • moz_keywords 关键字,和"Description:"在一个界面输入,没啥用处
  • moz_places 所有浏览的地址历史

看吧,没哪个表是和tag有什么关联的,可用grep一查,我标记的tag确实是在这个文件中,只好出绝招:

sqlite3 places.sqlite ".dump" > t.sql 

然后在t.sql里面一查找,终于明白了:

INSERT INTO "moz_bookmarks" VALUES(346,2,NULL,4,2,'testtag',NULL,'',1208788891265751,1208788891362043); INSERT INTO "moz_bookmarks" VALUES(347,1,638,346,0,NULL,NULL,NULL,1208788891361294,NULL); 

tag就是存在了moz_bookmarks这个表中,和书签的记录混在一起。像上面这种情况,每个tag除了自身占一行记录之外,如果有几个书签被标记了这个tag,那么就还会多出几条记录tag-书签关联关系的记录。

窃以为这并不是存储tag的最佳方式,而且FF在tag的使用上也太简单了,目前看到的就是一个Smart Bookmarks里能按常用tag查网站,连Tag Cloud也没有。一是不知道以后的tag数据格式是否会改变,二是应该会有扩展来完善这块功能,期待吧。

Source: http://www.fwolf.com/blog/post/398