前言

我的网站设置成了游客不能评论,必须要登录才可以。我用了一个SmartSpam插件来管理评论,里面就有一个禁止游客评论。但是这里还有一个问题:评论区的游客信息区还是存在的,游客填写完评论内容,还必须要填写昵称和邮箱,否则不能提交,当用户填写完成之后,才会提示禁止游客评论。这在无形之中就浪费了访客的时间,降低了访客评论的积极性。
因此,本次需要去掉评论区的用户信息填写区。本次修改是在主题源代码修改,为了防止主题更新后又需要重新编写大量的代码,所以我只是将那部分区域隐藏不显示,而不是去除填写模块。在隐藏的同时要赋值任意值,作为用户填写的内容,这样子网站就不会提示访客填写用户名和邮箱。

步骤概述

  1. 给块级元素标签div添加hidden属性,使其不显示;
  2. 给每个输入框的value值设定内容,以达到提前赋值的效果。

实操

  1. 确定代码位置

评论区在主题文件的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>
  1. 隐藏块级元素

在上面找到的块级元素中,有三个大的块级元素分别是名称、邮箱、网址。
我们只需要在第一行的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>

但是,游客在评论的时候还是会要求填写昵称和邮件,因此接下来我们需要对这两个内容进行提前赋值。

  1. 赋值

在这三个块级元素中,分别有三个“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标签也是如此设置。
至此,本次修改已经达成目的了。

最后修改:2024 年 01 月 21 日
如果觉得我的文章对你有用,请随意赞赏