typecho实现文章增加表单

Typecho 64

教程开始
1.前期准备,想好自己要添加怎样的字段和表单类型,比如我想添加一个select表单,额外显示文章的状态,字段名称state,字段类型为int。
那么,打开phpmyadmin,首先在数据中新建名为state的字段,类型为int,允许为空,默认值为0
! 28721-hboz5sggvh.png (https://magicblue.cn/usr/uploads/2023/04/461547705.png)
然后,准备好html代码,按照typecho原有的格式,<section class="typecho-post-option"> <label for="token-input-tags" class="typecho-label"><?php _e('审核状态'); ?></label> <p> <select id="state" name="state"> <option value="0" >审核中</option> <option value="1" >不通过</option> <option value="2" >审核通过?></option> <option value="3" >已结算</option> </select> </p> </section>2.接下来,就要开始修改Widget文件。
首先是要让表单的提交接收一个新的参数,具体的文件在/var/Widget/Contents/Post/Edit.php
找到大概719行的位置,将如下代码:$contents = $this->request->from('password', 'allowComment', 'allowPing', 'allowFeed', 'slug', 'tags', 'text', 'visibility');修改为$contents = $this->request->from('password', 'allowComment', 'allowPing', 'allowFeed', 'slug', 'tags', 'text', 'visibility', 'state');控制文章增删改查的文件是/var/Widget/Abstract/Contents.php
大概257行,将原本的代码return $this->db->select('table.contents.cid', 'table.contents.title', 'table.contents.slug', 'table.contents.created', 'table.contents.authorId', 'table.contents.modified', 'table.contents.type', 'table.contents.status', 'table.contents.text', 'table.contents.commentsNum', 'table.contents.order', 'table.contents.template', 'table.contents.password', 'table.contents.allowComment', 'table.contents.allowPing', 'table.contents.allowFeed', 'table.contents.parent')->from('table.contents');修改为return $this->db->select('table.contents.cid', 'table.contents.title', 'table.contents.slug', 'table.contents.created', 'table.contents.authorId', 'table.contents.modified', 'table.contents.type', 'table.contents.status', 'table.contents.text', 'table.contents.commentsNum', 'table.contents.order', 'table.contents.template', 'table.contents.password', 'table.contents.allowComment', 'table.contents.allowPing', 'table.contents.allowFeed', 'table.contents.parent','table.contents.state')->from('table.contents');大概288行,插入内容字段定义的地方,增加如下代码(记得给前面的加上逗号,防止代码报错)'state' => empty($content 'state' ) ? 0 : intval($content 'state' )大概333行,更新内容字段定义的地方,增加如下代码'state' => empty($content 'state' ) ? 0 : intval($content 'state' )3.完成字段定义后,就可以将html放进文章的发布文件了。 不过在这之前要修改一下,比如改为如下:

因为我要的是select表单,所以要根据$post->state的值来判断是否选择,那么其实如果要在其它地方将值调用出来,或者就是子级要用其它表单来调用值,用以下代码就好了 <?php $post->state(); ?>保存之后,测试发布以下,确认没有报错,并且可以调出选中的select,就代表增加成了。 ! 05789-2ux7m7z1xfn.png (https://magicblue.cn/usr/uploads/2023/04/923282361.png) 这个实现在二次开发中有很大的好处,比如让文章拥有更多类型,新增更多定义,让扩展性更强。

需要能玩这个游戏的老手机吗?

需要付费找各类手机游戏软件刷机包吗?

微信: lost155805 QQ: 1558050515

添加新评论