comment_form()函數实现willin的评论表情插入

继续折腾 WordPress3.0 表单生成函数 comment_form(),这次折腾的是评论表情,用了 comment_form() 后,对于一般评论表单的代码插入非常麻烦,得再折腾才能实现之。

willin 写的评论表情插入代码是很方便的,就一个 smiley.php 文件,但现在用 comment_form() 生成表单应该怎样插入调用代码呢?

经过自己对 zBench 的升级折腾,还是给搞定了,下面说说方法

(这行是废话,为了排版而存在)

一、改造 smiley.php,改造后的代码如下:

<script type="text/javascript" language="javascript">
/* <![CDATA[ */
    function grin(tag) {
    	var myField;
    	tag = ' ' + tag + ' ';
        if (document.getElementById('comment') && document.getElementById('comment').type == 'textarea') {
    		myField = document.getElementById('comment');
    	} else {
    		return false;
    	}
    	if (document.selection) {
    		myField.focus();
    		sel = document.selection.createRange();
    		sel.text = tag;
    		myField.focus();
    	}
    	else if (myField.selectionStart || myField.selectionStart == '0') {
    		var startPos = myField.selectionStart;
    		var endPos = myField.selectionEnd;
    		var cursorPos = endPos;
    		myField.value = myField.value.substring(0, startPos)
    					  + tag
    					  + myField.value.substring(endPos, myField.value.length);
    		cursorPos += tag.length;
    		myField.focus();
    		myField.selectionStart = cursorPos;
    		myField.selectionEnd = cursorPos;
    	}
    	else {
    		myField.value += tag;
    		myField.focus();
    	}
    }
/* ]]> */
</script>
<?php $smilies = '
<a href="javascript:grin(\':?:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_question.gif" alt="" /></a>
<a href="javascript:grin(\':razz:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_razz.gif" alt="" /></a>
<a href="javascript:grin(\':sad:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_sad.gif" alt="" /></a>
<a href="javascript:grin(\':evil:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_evil.gif" alt="" /></a>
<a href="javascript:grin(\':!:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_exclaim.gif" alt="" /></a>
<a href="javascript:grin(\':smile:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_smile.gif" alt="" /></a>
<a href="javascript:grin(\':oops:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_redface.gif" alt="" /></a>
<a href="javascript:grin(\':grin:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_biggrin.gif" alt="" /></a>
<a href="javascript:grin(\':eek:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_surprised.gif" alt="" /></a>
<a href="javascript:grin(\':shock:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_eek.gif" alt="" /></a>
<a href="javascript:grin(\':???:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_confused.gif" alt="" /></a>
<a href="javascript:grin(\':cool:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_cool.gif" alt="" /></a>
<a href="javascript:grin(\':lol:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_lol.gif" alt="" /></a>
<a href="javascript:grin(\':mad:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_mad.gif" alt="" /></a>
<a href="javascript:grin(\':twisted:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_twisted.gif" alt="" /></a>
<a href="javascript:grin(\':roll:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_rolleyes.gif" alt="" /></a>
<a href="javascript:grin(\':wink:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_wink.gif" alt="" /></a>
<a href="javascript:grin(\':idea:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_idea.gif" alt="" /></a>
<a href="javascript:grin(\':arrow:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_arrow.gif" alt="" /></a>
<a href="javascript:grin(\':neutral:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_neutral.gif" alt="" /></a>
<a href="javascript:grin(\':cry:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_cry.gif" alt="" /></a>
<a href="javascript:grin(\':mrgreen:\')"><img src="'.get_bloginfo("wpurl").'/wp-includes/images/smilies/icon_mrgreen.gif" alt="" /></a>
<br />'
?>

二、(comments.php)在<?php comment_form(); ?>上面加入调用 smiley.php

<?php include(TEMPLATEPATH . '/smiley.php');?>

三、修改上篇文章说的加入 Ctrl + Enter 的 comment_form() 函数参数,变成如下:

<?php comment_form('comment_field=<p class="comment-form-comment"><textarea aria-required="true" rows="8" cols="45" name="comment" id="comment" onkeydown="if(event.ctrlKey){if(event.keyCode==13){document.getElementById(\'submit\').click();return false}};"></textarea></p><p>'.$smilies.'</p>'); ?>

效果图:

真折腾~

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25313

82 comments

  1. 流年 流年 Firefox 3.6.10 Windows XP

    还改造了那个php文件啊。
    嗯,跟我的方法是不同的,嗯嗯

    沙发
  2. zrqx008 zrqx008 Firefox 3.6.10 Windows 7

    发现你现在又换回默认表情了。

    板凳
  3. Justice Justice Firefox 3.6.10 Windows XP

    其实 comment_form() 中间调用了很多 action 的,可以在 functions.php 里面加 hook。

    地板
  4. ......
  5. 麦子花开 麦子花开 Google Chrome 14.0.835.163 Windows 7

    这个可以不用么,我的主题是采用的这个,现在好多东西自己都加不上,请问能不能不用这个,不会代码的话能不能移植别的主题的自写的表单

    31楼
  6. WP新手笔记之二十:评论添加表情[comment_form()] | cCYANn - pingback on 2011/11/20/ 08:11
    33楼
  7. 黑黑 黑黑 Google Chrome 17.0.942.0 Windows 7

    :mrgreen: 收下啦~

    34楼
  8. 又把模板小改了一下 - 雨吁 - pingback on 2012/01/10/ 13:19
    35楼
  9. 鬼娃娃 鬼娃娃 Google Chrome 24.0.1290.1 Windows 7 x64 Edition

    我吧表情放到了主题目录下,现在是评论框表情是主题下的图片,而评论好后上面是主题默认的

    37楼
  10. jerry jerry Google Chrome 28.0.1500.63 Windows 7 x64 Edition

    我按照这种方法修改了,可以添加表情了,但是看起来很丑,应该怎么修改过来,看一下这里有示意:http://blog.pcbeta.us/post/107
    期待博主帮助,多谢!

    38楼
  11. 有点蓝 有点蓝 Opera 12.16 Windows 7

    Z大,我的模板也是用的comment_form函数,终于照你的教程搞定表情了,可是还想更新进一步,把表情路径定义到自己模板文件夹,可是网上搜来的教程都没有效果。
    比如这个放到functions里,//评论表情路径
    add_filter('smilies_src','custom_smilies_src',1,10);
    function custom_smilies_src ($img_src, $img, $siteurl){
    return get_bloginfo('template_directory').'/smilies/'.$img;
    }。
    请问,是不是因为comment_form原因呢?

    39楼
    • zwwooooo zwwooooo Firefox 24.0 Windows 8 x64 Edition

      @有点蓝
      你好像搞错了,用willin的吧:

      //////// 自定义表情路径 by willin
      function custom_smilies_src($src, $img){
      return get_template_directory_uri().'/images/smilies/' . $img;
      }
      add_filter('smilies_src', 'custom_smilies_src', 10, 2);

      表情图片放所用主题的 smilies 目录下。

  12. Youth.霖 Youth.霖 Firefox 26.0 Android

    找到了详细说明!

    40楼
  13. 平板盒子 平板盒子 Google Chrome 34.0.1847.116 Windows 8.1 x64 Edition

    我来折腾下,顺便试试新邮箱头像。

    41楼
  14. 1Specs Specs Google Chrome 34.0.1847.116 Windows 7

    非常好用,拿去用了,并且把默认的表情替换了

    42楼
  15. BabyBichu BabyBichu Google Chrome 33.0.1750.149 Windows 8 x64 Edition

    很有用,收藏了,刚才用了

    43楼

Leave a Reply