自定义Typecho加密文章的Html结构

Typecho教程 typecho 教程 2019-08-25

自定义Typecho加密文章的Html结构.jpg

为什么要自定义?

我们先看下正常的typecho加密文章的html代码结构

<form class="protected" action="一个链接地址" method="post">
<p class="word">请输入密码访问</p>
<p>
<input type="password" class="text" name="protectPassword">
<input type="hidden" name="protectCID" value="文章id">
<input type="submit" class="submit" value="提交">
</p>
</form>

那么我们作为模板的作者,如果要写这部分的样式,就必须根据他的class来写样式;
但是如果我用的是前端框架,框架已经内置好了一些表单样式,我们为什么不用呢?
因为typecho默认的结构,无法套用,所以就有了这篇文章。

自定义加密文章的Html

将模板post.php中的<?php $this->content(); ?>换为以下代码即可,其中html结构可根据自己模板架构自行调整。

<!--判断文章是否加密-->
<?php if($this->hidden||$this->titleshow): ?>
<!--如果加密,输出自定义的表单格式-->
<form action="<?php echo Typecho_Widget::widget('Widget_Security')->getTokenUrl($this->permalink); ?>" method="post">
<div class="form-group mb-3">
<label>请输入密码访问</label>
<div class="input-group">
<input  type="password" class="text" name="protectPassword" class="form-control" placeholder="请输入密码" aria-label="请输入密码">
<input type="hidden" name="protectCID" value="<?php $this->cid(); ?>" />
<div class="input-group-append">
<button class="btn btn-primary" type="submit">提交</button>
</div>
</div>
</div>
</form>
<?php else: ?>
<!--如果未加密,输出文章内容-->
<?php $this->content(); ?>
<?php endif;?>

其中$this->titleshow是用来兼容titleshow插件的。

关于Titleshow插件

Typecho文章密码保护功能,默认会强制标题为”此内容被密码保护“,隐藏文章标签,强制文章评论数为0,隐藏文章内容,并且不允许文章进行评论,还会返回403
Titleshow插件,完美的解决了这些问题,加密文章可以显示标题,允许评论,不返回403状态等等,让文章加密功能只加密文章内容不影响其他。
那么,这么好的插件去哪里下载呢?
这里:https://github.com/jrotty/Titleshow

题外话

只是因为想偷懒不想写css,才有了本文,本身没啥技术含量,只是最开始不兼容Titleshow插件,所以就没有发文章出来,毕竟自己写的教程不兼容自己写的插件,岂不是很难堪233。所以今天给Titleshow插件升级了下,可以完美兼容了,嘿嘿嘿!

10条评论

    jdeal

    学习啦,哈哈

    游客 Ios 70天前回复

    NiuBi

    踩个角脚印

    游客 Windows7 79天前回复

    尚寂新

    这种方法就是...能够兼容pjax/ajax的话就好了。等有时间去找找
    (估计我也会放弃这个想法。因为懒啊)

    用户 安卓派 80天前回复

      尚寂新
      @尚寂新

      等下....配合文中插件,pjax进入的话状态码没了好办,就是表单提交这块有些不确定

      用户 安卓派 80天前回复

        泽泽社长
        @尚寂新

        所以说titleshow插件是神器,最开始只是想让其显示文章标题这么一个功能,结果顺便带了这么多附加属性

        作者 MacOS 80天前回复

    流年伴夏

    输入密码访问,那么搜索引擎也抓不到这篇文章了吧

    游客 Windows7 80天前回复

      泽泽社长
      @流年伴夏

      用了titleshow插件应该有几率被抓,毕竟有标题了

      作者 MacOS 80天前回复

        流年伴夏
        @泽泽社长

        你这里有,文章底部,点赞按钮的 代码吗?

        游客 Windows7 76天前回复

    Ai

    虽然不懂,但还是给大佬递茶~

    游客 Windows10 81天前回复

      泽泽社长
      @Ai

      这个主要就是想偷懒不写css,然后想出来的奇葩方法

      作者 MacOS 81天前回复

智能推荐