No comments have been added to this post yet.

Contact Form ][插件的两个问题

给自己的WP Blog增加一个邮件联系功能有时是挺实用的。用contact form ][这个插件的朋友应该不少,这个插件也始于Ryan. Connect.站的WP-ContactForm插件,有提高和增加一些新功能。在我使用的过程感觉存在两个问题。一个是邮件头的From(来自)和Subject(标题)没有编码,Gmail收取为乱码;二是整个Form的布局设计不结实也不太合理。

邮件头乱码的问题其实AvP早有解决方法,很简单,就是对邮件header进行UTF-8和base64编码。在wp-contactform.php文件大概160多行和170几行(针对for wp1.5x和2.0两个版本的大致位置)两处各改两句就搞掂,两处几乎是一样的,前者是当邮件发送者选择给自己发送备份,后者是向Blog主人发送邮件。片段如下(说明看黑色部分我的注释):

[code lang=”cpp”]
$headers = “MIME-Version: 1.0\n”;/*改下面这行,from进行编码*/
$headers .= “From: =?UTF-8?B?”.base64_encode($name).”?= < $email>\n”;
$headers .= “Content-Type: text/plain; charset=\”" .get_settings(’blog_charset’). “\”\n”;
$headers .= “Bcc: $recipient\n”;/*插入下面这行,对subject编码*/
$subject = “=?UTF-8?B?”.base64_encode($subject).”?=”;
[/code]

第二个问题就是Form框内布局既不科学也不标准,同时使用了float:left;float:right;,而且有n个div,左一个右一个,最后再加一个这样的<div style="clear:both;">&nbsp;</div>来清除浮动。同时使用左右浮动其实是不好的,结构并不结实,比如Firefox下右边框就会被浮动吞噬了。可以看wordpresscn的示例。有这么复杂么?一行一句<p>完全就可以达到一样甚至更好的效果。看我修改后的示例。你可以在Firefox中ctrl+u唤出查看源码及css,就这么几个<p>和几条简单的CSS就完成整个Form的布局,更美观、符合标准、自适应宽度,任何页面都不会有什么问题。

需要纠正一下的是在contactform ][的后台选项中把<textarea>colsrows两个属性表示为<textarea>的宽度和高度有时并不完全正确,colsrows是一个维数,即当文本框内字数或行数超过设置的值后出现滚动条(应该和父对象的字体大小有关),并不一定为框的宽度,因为文本框的可视宽(高)度以及框内(子对象)的字体大小可以通过CSS指定。查看了xhtml 1.0 strict的DTD,这2个属性是<textarea>必须要有的。所以按照我修改后的样式,在后台选项只设置好正确的每行多少字符值就行了,这个值并不影响<textarea>的可视宽度。当然rows(字符行数)在这里是可以控制高度的。

6 Comments

  1. Blogging Pro China » Blog Archive » Contact Form ][插件的两个问题 Pingbacks @ 22:13:56 on 2006-02-04

    […]   Contact Form ][插件的两个问题。 一个是邮件头的From(来自)和Subject(标题)没有编码,Gmail收取为乱码;二是整个Form的布局设计不结实也不太合理。 contact […]

  2. 小狼 Comments @ 11:14:58 on 2006-02-17

    请问能不能直接把修改过后的文件直接发出来让我们下载?

  3. Dark Comments @ 12:10:57 on 2006-02-17

    我这个Blog并未使用这个插件,另外一个站是用的WP1.5,contact form ][ for 2.0的文件略有不一样,不过你直接照猫画虎就可以了,我手上并没有For 2.0修改过的文件。

  4. youzeng Comments @ 07:07:00 on 2006-03-21

  5. 天方 Comments @ 10:56:06 on 2006-09-16

    我的contact form的名字显示还是乱码,不知道怎么改?

  6. doo Comments @ 06:21:06 on 2006-10-31

    这里不会也是发邮件吧@