前言
我的网站设置成了游客不能评论,必须要登录才可以。我用了一个SmartSpam插件来管理评论,里面就有一个禁止游客评论。但是这里还有一个问题:评论区的游客信息区还是存在的,游客填写完评论内容,还必须要填写昵称和邮箱,否则不能提交,当用户填写完成之后,才会提示禁止游客评论。这在无形之中就浪费了访客的时间,降低了访客评论的积极性。
因此,本次需要去掉评论区的用户信息填写区。本次修改是在主题源代码修改,为了防止主题更新后又需要重新编写大量的代码,所以我只是将那部分区域隐藏不显示,而不是去除填写模块。在隐藏的同时要赋值任意值,作为用户填写的内容,这样子网站就不会提示访客填写用户名和邮箱。
步骤概述
- 给块级元素标签div添加hidden属性,使其不显示;
- 给每个输入框的value值设定内容,以达到提前赋值的效果。
实操
- 确定代码位置
评论区在主题文件的comments.php文件中,我们可以直接搜索相关的提示内容以定位到具体位置,如:名称。
在我的主题中可以找到一下代码是访客信息区的代码:
<div id="author_info" class="row row-sm">
<?php endif; ?>
<div class="comment-form-author form-group col-sm-6 col-md-4">
<label for="author"><?php _me("名称") ?>
<span class="required text-danger">*</span></label>
<div>
<?php //echo $this->remember('mail',true); ?>
<img class="author-avatar" src="<?php echo Utils::getAvator($this->remember('mail',true),65) ?>" nogallery/>
<input id="author" class="form-control" name="author" type="text" value="<?php $this->remember('author'); ?>" maxlength="245" placeholder="<?php _me("姓名或昵称") ?>">
<?php if(Utils::getExpertValue("comment_random_name",true)): ?>
<div class="random_user_name shake-constant">🎲</div>
<?php endif; ?>
</div>
</div>
<div class="comment-form-email form-group col-sm-6 col-md-4">
<label for="email"><?php _me("邮箱") ?>
<?php if( $this->options->commentsRequireMail):?>
<span class="required text-danger">*</span>
<?php endif; ?>
</label>
<input type="text" name="mail" id="mail" class="form-control" placeholder="<?php if( $this->options->commentsRequireMail) _me
("邮箱 (必填,将保密)");else _me("邮箱(选填,将保密)") ?>" value="<?php $this->remember('mail'); ?>" />
</div>
<div class="comment-form-url form-group col-sm-12 col-md-4">
<label for="url"><?php _me("地址") ?>
<?php if( $this->options->commentsRequireURL):?>
<span class="required text-danger">*</span>
<?php endif; ?>
</label>
<input id="url" class="form-control" name="url" type="url" value="<?php $this->remember('url'); ?>" maxlength="200" placeholder="<?php _me("网站或博客") ?>"></div>
</div>
- 隐藏块级元素
在上面找到的块级元素中,有三个大的块级元素分别是名称、邮箱、网址。
我们只需要在第一行的div标签中加入“hidden”就可以隐藏掉这整个块级元素,即:
<div id="author_info" class="row row-sm" hidden>
<?php endif; ?>
<div class="comment-form-author form-group col-sm-6 col-md-4">
<label for="author"><?php _me("名称") ?>
<span class="required text-danger">*</span></label>
但是,游客在评论的时候还是会要求填写昵称和邮件,因此接下来我们需要对这两个内容进行提前赋值。
- 赋值
在这三个块级元素中,分别有三个“input”标签来收集这三个数据,我们只要在这三个标签中,添加或修改“value”的值就可以达到直接赋值的效果。
如下面是标签的原始内容:
<input id="author" class="form-control" name="author" type="text" value="<?php $this->remember('author'); ?>" maxlength="245" placeholder="<?php _me("姓名或昵称") ?>">
我这里直接给这个输入框赋值“测试”,修改如下:
<input id="author" class="form-control" name="author" type="text" value="测试" maxlength="245" placeholder="<?php _me("姓名或昵称") ?>">
其它两个块元素中的input标签也是如此设置。
至此,本次修改已经达成目的了。