最后更新于2019年02月17日; 如遇到问题,请留言及时通知站长; 欢迎加入 三生三世,讨论各种问题!

说明

本教程属于系列教程,用于讲解Typecho主题编写的相关教程。本篇教程用于讲解typecho的前台注册登录方法以及前台修改个人信息的方法。全部文档教程来源于泽泽,官网是https://qqdie.com/。目前,我还没写过主题。不过魔改了大概四份主题,所以对这些也算懂一点吧。

Typecho前台注册

代码

<form action="<?php $this->options->registerAction();?>" method="post" name="register" role="form">
<input type="hidden" name="_" value="<?php echo $this->security->getToken($this->request->getRequestUrl());?>">
用户名<input type="text" name="name">
邮箱:<input type="email" id="mail" name="mail" >
<button type="submit" name="loginsubmit" value="true">注册</button>
</form>

说明

用户进入注册页面,只会要求用户填写用户名和邮箱,点击注册按钮后会跳转到程序后台,此时会提示被分配了个临时密码,同时提示用户修改默认密码,填写个人信息如昵称,个人主页等。

扩展

如果也想像前台登录一样,登陆后自定义跳转页面,需要修改/var/Widget/Register.php这个文件,倒数第三行左右的这个代码$this->response->redirect($this->options->adminUrl);换成如下代码

if (NULL != $this->request->referer) {
$this->response->redirect($this->request->referer);
} else{
$this->response->redirect($this->options->adminUrl);
}

这样在form里插入

<input type="hidden" name="referer" value="跳转地址">

即可。

Typecho前台登录

前言

前台登录是个很方便的功能,无论是作为个人博客还是多人博客,前台登录都会节省用户时间。

代码

<form action="<?php $this->options->loginAction()?>" method="post" name="login" rold="form">
<input type="hidden" name="referer" value="<?php $this->options->siteUrl(); ?>">
<input type="text" name="name" autocomplete="username" placeholder="请输入用户名" required/>
<input type="password" name="password" autocomplete="current-password" placeholder="请输入密码" required/>
<button type="submit">登录</button>
</form>

其中 referer 这个input就指明了登录成功后的跳转位置,现在默认的首页,可以修改value的值来自行定义登录成功跳转得地址。

Typecho前台修改个人信息

代码

typecho皮肤中的author.php就是用户的个人中心,那么如何用它实现用户在前台修改个人信息呢?
直接用如下代码即可:

<section>
<h3><?php _e('个人资料'); ?></h3>
<ul><li>
<label class="typecho-label" for="screenName-0-1">
用户名</label><?php $this->user->name() ?></li></ul>
<?php Typecho_Widget::widget('Widget_Users_Profile')->profileForm()->render(); ?>
</sction>
<section id="change-password">
<h3><?php _e('密码修改'); ?></h3>
<?php Typecho_Widget::widget('Widget_Users_Profile')->passwordForm()->render(); ?>
</sction>
<?php Typecho_Widget::widget('Widget_Users_Profile')->personalFormList(); ?>

问题

直接用的话,需要考虑一些事情,比如游客访问进来如果也这样显示岂不是很尴尬,A用户访问B用户时显示也会变尴尬,所以需要加入判断。

<?php if($this->user->uid==$this->author->uid && $this->user->hasLogin()): ?>
这里填写上边的代码即可
<?php endif; ?>

代码说明:如果处于登录状态,用户的id等于当前作者的id就显示。

后续说明

本文来源:https://qqdie.com/,取自QQ群。

- The End -