jQuery SimpleSlug Plugin v0.1

| 15 comments 2009-07-06 11:55:11

写了一个新的jQuery插件,作用是根据你输入的文章标题,自动地将其中的英文字母和数字提取出来,然后生成一个slug。slug通常的作用是给blog文章一个漂亮的网址,比如你现在看到的这篇文章,它的网址是 http://dingyu.me/blog/posts/view/jquery-simpleslug-plugin,它的slug就是jquery-simpleslug-plugin。

这个插件在jQuery Plugin上的主页是http://plugins.jquery.com/project/jquery-simpleslug,觉得好用就投上一票 :D

演示

http://dingyu.me/blog/files/jquery-simpleslug-plugin/demo.html

用法

用法很简单,比如你blog编辑界面上用来输入slug的文本框的id为slug,用来输入文章标题的文本框的id为title,则只要如下一行代码即可:

$('input#slug').simpleslug({
	source: 'input#title'
});

source的意思就是生成slug的源文本框。除了这个参数以外,还支持以下两个参数

preview

你可以在input的旁边放一个id为preview的span,然后这样用preview:

$('input#slug').simpleslug({
	source: 'input#title',
	preview: 'span#preview'
});

这样插件会实时地把生成的slug显示出来,用处就是告诉用户这篇blog文章的完整的网址。比如你可以在span前面写上 http://dingyu.me/blog/posts/view/。

replacement

默认情况下单词或数字之间的间隔符是“-”。比如你输入“Hello world”,那么出来的slug就是“hello-world”。你可以改成你喜欢的,比如:

$('input#slug').simpleslug({
	source: 'input#title',
	preview: 'span#preview',
	replacement: '_'
});

和Wordpress集成

默认情况下,Wordpress会把文章标题整个作为slug,而有些人只想要其中的英文和数字。利用SimpleSlug的slugify()方法,这很容易:

  1. 修改 wp-includes/js/autosave.js
  2. 在文件开头加入如下代码:
    function slugify(str, replacement) {
    		//replace everything that is not a word character
    		slug = str.replace(/[^0-9a-zA-Z]/g, replacement);
     
    		//replace mutilple continous replacements
    		slug = slug.replace(eval("/"+replacement+"{2,}/g"), replacement);
     
    		//replace the beginning and ending replacement(s)
    		slug = slug.replace(eval("/(^"+replacement+")|("+replacement+"$)/g"), '');
    		//convert the slug to lower case
    		slug = slug.toLowerCase();
     
    		return slug;
    }
  3. 找到文件中的
    jQuery("#title").val()
    替换为
    slugify(jQuery("#title").val(),'-')
  4. 保存文件,搞定!

下载

http://dingyu.me/blog/files/jquery-simpleslug-plugin/jquery.simpleslug.0.1.js

15 comments so far

  1. JudahXIII 2009-07-07 10:55:09

    可以问个题外话吗,为什么我在你这里永远没头像?有Gravatar的……

  2. 丁宇 2009-07-07 23:27:39

    @JudahXIII 你的头像在其它地方可以正常显示嘛?别人的gravatar都可以正常显示的。

  3. rose 2009-09-05 21:03:18

    这个在wordpress怎么用?

  4. 丁宇 2009-09-06 22:25:17

    @rose 引入这个js文件,然后根据wp模板里面文本域的名称使用即可。

  5. rose 2009-09-07 15:07:52

    不懂你说什么啊,能不能具体点吗

  6. 丁宇 2009-09-07 17:36:24

    @rose 特意找了个wp用了一下。wp是自带这个功能的:编辑文章的时候,在标题下面有个“固定链接”就是。

  7. rose 2009-09-08 21:33:35

    这个我知道,但我想自动运行,就不用次次手动改了

  8. 丁宇 2009-09-09 11:45:17

    @rose 你说的“自动运行”是什么意思?在wp里你只要标题中有英文,wp就会自动的把字母提取出来放进slug,和我这个插件的效果一样。

  9. rose 2009-09-10 23:33:19

    举个例子 :

    http://hutuworm.blogspot.com/2009/09/gmail-100.html

    它的标题是"Gmail 停机 100 分钟的启示",但链接只保留了英文和数字,这是blogspot自动改的,不用手动改.

    wp若果用中文标题的的話,地址会生成一堆乱码的

  10. 丁宇 2009-09-15 20:48:37

    周末帮你看一下,这几天早出晚归,累!

  11. 丁宇 2009-09-20 14:01:56

    我从WordPress的官方站点上下载安装了一个中文版,当我输入中文标题后,WP会自动帮我生成一个中文地址,完全没问题。无论是在编辑文章的时候,还是发布以后访问起来都可以。

    我下载的版本是2.8.4,字符集都是utf8。

  12. rose 2009-10-01 01:08:46

    我知道可以,但是我只想slug里保留英文和数字

    你的这个插件説"自动地将其中的英文字母和数字提取出来",似乎可以做到,但不知道怎么用到wp里

  13. 丁宇 2009-10-09 18:09:24

    @rose 花了点时间研究了下,看我文章中的回复。

  14. rose 2009-10-19 19:16:29

    改了,不起作用

    jquery.simpleslug.0.1.js这个文件放在wp-includes/js/jquery/ 文件夹对吗?

  15. 丁宇 2009-10-20 10:06:47

    @rose 不用jquery.simpleslug.0.1.js,你直接按照“和Wordpress集成”一段修改wp-includes/js/autosave.js就行了,就改这么一个文件。

(Support Gravatar)
  • angel.gif
  • glasses.gif
  • hum.gif
  • sad.gif
  • caresse.gif
  • sick.gif
  • angry.gif
  • zip.gif
  • gun.gif
  • emu.gif
  • big_smile.gif
  • clin_oeil.gif
  • devil.gif
  • wahou.gif
  • confus.gif
  • mad.gif
  • larme.gif
  • wave.gif
  • scare.gif
  • lang_1.gif
  • ask.gif
  • xd.gif
  • eye_up.gif
  • mdr.gif
  • smile_1.gif
  • lang_2.gif
  • zzz.gif
  • bad_smile.gif
  • jet.gif
  • smile_2.gif
  • love.gif

About

我在厦门拍的照片

丁宇(Felix Ding),电脑Geek,狂热的爱书和爱乐分子,99年迷上网页设计,并从此一发不可收。现在在上海做用户体验/产品设计咨询。Email: felixding[AT]gmail.com。

订阅到RSS