typecho添加用户个人签名功能,具体实现

最近需要实现的一个需求,本来我想通过插件的形式实现,然而typecho的个人设置页面没有可以调出代码的钩子,研究来研究去,还是决定改内部程序了,毕竟以实现需求为主要目的,而非在维持程序不变的情况下。所以,就开始动手修改了,我也不打算写太多代码,因为typecho内置的方法和接口已经非常强大,没有必要再自己写重复的东西,在花了几十分钟,简单看了看Widget原有的写法后,功能完美实现了。
网上并没有相关的教程,所以我能参考的只有typecho的原本代码,目前typecho1.0以上版本都可以使用。
Snap.jpg

教程开始

1.首先,需要在后台个人设置页面增加一个输入框(别想着在admin/profile.php这个文件改,那是最笨的办法),编辑/Widget/Users/Profile.php,找到57行点子邮件地址那些表单的代码下面,插入如下代码:

/** 个人简介 */
$intro = new Typecho_Widget_Helper_Form_Element_Textarea('intro', NULL, NULL, _t('个人简介'), _t('个人简介作为此用户对于自己的简单介绍.').'<br />' . _t('字数请不要太多,适中即可.'));
$form->addInput($intro);

Snap1.jpg
就这样,一个name等于intro的Textarea文本框就出现在界面上了,刷新个人设置界面就能看见,不过现在填写提交都是没有用的,因为并没有进入数据库,所以下一步就是添加数据库字段了。

2.打开phpmyadmin或者其它数据库管理工具,编辑typecho_users表结构,在其中新增intro字段,类型我省事写成了text。如果是一个还未安装的typecho,可以直接编辑typecho的install文件夹里面的mysql.sql,找到typecho_users这个表的代码,同样的,在邮箱的字段底下加一行如下代码:

`intro` text NOT NULL,

Snap2.jpg

已经在运行中的网站通过phpmyadmin修改后就行了,没有的就安装上述修改sql文件,然后执行typecho安装后,会自动出现字段。然而,到这里,用户的提交仍然是无用的,因为我们还没有把入库的字段加入typecho默认的方法

3.继续看/Widget/Users/Profile.php文件,找到272行,用户更新的方法里面,看到“取出数据”这条注释,修改它下面的原本那条代码,改为如下:

$user = $this->request->from('mail', 'screenName', 'url', 'intro');

然后继续找到78行位置,那里有输入框调用数据库值得定义,不写的话,就算提交进入数据库,前台也看不见效果,所以加上一条。

$intro->value($this->user->intro);

Snap3.jpg

4.经过上述那些步骤之后,一整个字段定义,入库流程就完成了,而前台的调用也很简单,基本上就是完全按照typecho默认的格式,代码如下:

<?php $this->user->intro(); ?>   //当前登录用户签名
<?php $this->author('intro'); ?>   //文章作者签名

规则之树版权所有,转载请注明来源,标明作者及原文链接

发表评论
加载中...

相关文章