数据库添加字段
- 在typecho\_contents表中创建字段,默认类型为字符串
- 例如在表中添加以下6个字段
addr,phone,weixin,douyin,kuaishou,weibo
WritePost 函数添加接收字段参数
- 打开以下文件/var/Widget/Contents/Post/Edit.php
- 约在260行
- 搜索以下代码
/**
* 发布文章
*/
public function writePost()
{
$contents = $this->request->from(
- 在后面添加新字段,例如以下
'addr',
'phone',
'weixin',
'douyin',
'kuaishou',
'weibo'
- 注意以下几点
1.最后一个字段后面没有逗号
2.请使用英文字符逗号
select函数里添加查询新字段
- 打开以下文件/var/Widget/Base/Contents.php
- 约在82行
- 搜索以下代码
/**
* 获取查询对象
*
* @return Query
* @throws Exception
*/
public function select(): Query
{
return $this->db->select(
- 添加你需要的字段,例如以下
'table.contents.addr',
'table.contents.phone',
'table.contents.weixin',
'table.contents.douyin',
'table.contents.kuaishou',
'table.contents.weibo'
- 注意要求和前面相同
insert 函数添加新参数
- 打开以下文件/var/Widget/Base/Contents.php
- 搜索以下代码
public function insert(array $rows): int
{
/** 构建插入结构 */
- 添加你需要的字段,例如以下
'addr' => empty($content['addr']) ? NULL : $content['addr'],
'phone' => empty($content['phone']) ? NULL : $content['phone'],
'weixin' => empty($content['weixin']) ? NULL : $content['weixin'],
'douyin' => empty($content['douyin']) ? NULL : $content['douyin'],
'kuaishou' => empty($content['kuaishou']) ? NULL : $content['kuaishou'],
'weibo' => empty($content['weibo']) ? NULL : $content['weibo']
- 注意要求和前面相同
update函数里构建更新结构
- 打开以下文件/var/Widget/Base/Contents.php
- 约在220行
- 搜索以下代码
public function update(array $rows, Query $condition): int
{
/** 首先验证写入权限 */
if (!$this->isWriteable(clone $condition)) {
return 0;
}
- 添加你需要的字段,例如以下
'addr' => empty($content['addr']) ? NULL : $content['addr'],
'phone' => empty($content['phone']) ? NULL : $content['phone'],
'weixin' => empty($content['weixin']) ? NULL : $content['weixin'],
'douyin' => empty($content['douyin']) ? NULL : $content['douyin'],
'kuaishou' => empty($content['kuaishou']) ? NULL : $content['kuaishou'],
'weibo' => empty($content['weibo']) ? NULL : $content['weibo']
- 注意要求和前面相同
function中添加功能
- 打开主题下functions.php
- 在里面添加字段功能
- 添加你需要的字段功能,例如以下
//字段
function themeFields($layout) {
$phone = new Typecho_Widget_Helper_Form_Element_Text('phone', NULL, NULL, _t('你的手机号'), _t('输入手机号,此项可以为空'));
$addr = new Typecho_Widget_Helper_Form_Element_Text('addr', NULL, NULL, _t('你的城市名'), _t('输入城市名称,此项可为空'));
$weixin = new Typecho_Widget_Helper_Form_Element_Text('weixin', NULL, NULL, _t('你的微信号'), _t('输入微信号,此项可为空'));
$douyin = new Typecho_Widget_Helper_Form_Element_Text('douyin', NULL, NULL, _t('你的抖音号'), _t('输入抖音号,此项可为空'));
$kuaishou = new Typecho_Widget_Helper_Form_Element_Text('kuaishou', NULL, NULL, _t('你的快手号'), _t('输入快手号,此项可为空'));
$weibo = new Typecho_Widget_Helper_Form_Element_Text('weibo', NULL, NULL, _t('你的微博号'), _t('输入微博号,此项可为空'));
$layout->addItem($phone);
$layout->addItem($addr);
$layout->addItem($weixin);
$layout->addItem($douyin);
$layout->addItem($kuaishou);
$layout->addItem($weibo);
}
- 现在你可以在后台编辑文章中看到效果
前端界面输出文章字段信息
- 打开主题下post.php
- 在需要输出信息的地方添加合适的代码,例如
<li><i class="fa fa-comments"></i> 手机: <? $field = $this->fields->phone(); ?>
</li>
<li><i class="fa fa-comments"></i> 城市: <? $field = $this->fields->addr(); ?>
</li>
<li><i class="fa fa-comments"></i> 微信: <? $field = $this->fields->weixin(); ?>
</li>
<li><i class="fa fa-comments"></i> 抖音: <? $field = $this->fields->douyin(); ?>
</li>
<li><i class="fa fa-comments"></i> 快手: <? $field = $this->fields->kuaishou(); ?>
</li>
<li><i class="fa fa-comments"></i> 微博: <? $field = $this->fields->weibo(); ?>
</li>
- 在文章中添加字段信息后,前端效果如下
- 输出字段信息
$this->fields->fieldName();