新四季網

cms的使用場景(CMS文章籤收功能開發示例)

2023-04-20 04:21:00

CMS文章籤收功能開發示例

功能需求說明:

1、 後臺添加文章時增加一個選項

文章籤收: 如需籤收時,選擇中相關用戶即可。

2、 前臺用戶登錄後,在文章頁面顯示

實現方案說明

文章籤收簡而言之就是給文章建一個籤收記錄表,這種功能點可以使用《模塊表單插件》來完成,籤收記錄相當於文章的子集內容。

開發步驟說明

第一步、後臺欄位創建和模塊表單的創建

1、安裝《模塊表單插件》

2、為文章news模塊,創建《籤收》的表單

3、為籤收表單,設置欄位,不需要的禁用掉

一般情況下自帶的title不需要了,開發者也可以根據實際情況來定。

4、進入文章news模塊管理 ,模塊內容自帶,創建欄位

籤收狀態欄位:根據需求創建籤收狀態欄位,來控制這個文章的狀態

籤收用戶欄位:需要指定哪些用戶來籤收這篇文字

籤收開關:控制這篇文章收費啟用籤收功能

本欄位啟用一下【條件聯動關聯】,然後不需要狀態時,隱藏下方欄位

需要狀態時,不勾選:

未選擇時,隱藏下方欄位

創建好的欄位如下:

5、切換到發布文章界面可以看到效果

第二步、程序設計部分

1、打開籤收表單的前端控制器文件:dayrui/App/News/Controllers/Qianshou.php

以下是開發好了的代碼,用於籤收動作的程序入庫記錄

cid = intval(\Phpcmf\Service::L('input')->get('cid')); $this->index = $this->_Module_Row($this->cid); if (!$this->index) { exit($this->_msg(0, dr_lang('模塊內容【id#%s】不存在', $this->cid))); } if (!$this->index['xqsyh']) { $this->_json(0, '沒有設置籤收人員'); } $uids = explode(',', $this->index['xqsyh']); if (!dr_in_array($this->uid, $uids)) { $this->_json(0, '你沒有籤收權限'); } $table = dr_module_table_prefix(APP_DIR).'_form_'.$this->form['table']; if (\Phpcmf\Service::M->table($table)->where('cid', $this->index['id'])->where('uid', $this->uid)->counts) { $this->_json(0, '你已經籤收了'); } $data = []; $data['title'] = ''; $data['status'] = 1; $data['catid'] = $this->index['catid']; // 欄目id $data['cid'] = $this->index['id']; // 內容id $data['uid'] = (int)$this->member['uid']; $data['author'] = $this->member['username']; $data['inputip'] = \Phpcmf\Service::L('input')->ip_address; $data['inputtime'] = SYS_TIME; $data['tableid'] = 0; $data['displayorder'] = 0; // 插入主表 $rt = \Phpcmf\Service::M->table($table)->insert($data); if (!$rt['code']) { $this->_json(0, '系統故障籤收失敗'); } $total = \Phpcmf\Service::M->table($table)->where('status', 1)->where('cid', $data['cid'])->counts; \Phpcmf\Service::M->table_site('news')->update($data['cid'], [ 'qianshou_total' => $total, 'qszt' => count($uids) == $total ? 1 : 0, ]); $this->_json(1, '籤收成功'); }}

2、新建news模塊內容模型文件:dayrui/App/News/Models/Content.php

用於在內容頁輸出哪些用戶具有籤收權限和是否被籤收。

<?php namespace Phpcmf\Model\News;// 模塊內容模型類class Content extends \Phpcmf\Model\Content { // 格式化顯示內容,用於前端內容詳情頁面的格式化 public function _call_show($data) { $rt = []; if ($data['qianshou'] == 2 && $data['xqsyh']) { $users = $this->table('member')->where_in('id', explode(',', $data['xqsyh']))->getAll; if ($users) { foreach ($users as $r) { $r['uid'] = $r['id']; $r['qianshou'] = $this->table_site('news_form_qianshou')->where('uid', $r['id'])->where('cid', $data['id'])->getRow; $rt[] = $r; } } } else { $data['qianshou'] = 0; } $data['qianshou_data'] = $rt; return $data; } }

第三步、模板顯示部分

1、template/pc/default/home/news/show.html,加上簽收代碼

{if $qianshou}{if $member && $qianshou_data[$member.uid]['qianshou']}已經籤收{else}立即籤收{/if} 編號 用戶組 籤收人 籤收時間 IP {php $i=1;} {loop $qianshou_data $q} {$i} {php $i ;$user=dr_member_info($q.id);} {loop $user.group $tt} 用戶組名稱:{$tt.group_name} {/loop} {$q.username} {if $q.qianshou} {dr_date($q.qianshou.inputtime)} {else} 未籤收 {/if} {if $q.qianshou} {$q.qianshou.inputip} {else} 未籤收 {/if} {/loop} {else}後臺沒用設置{/if}

2、例如在首頁寫一個籤收列表

標題 狀態 情況 籤收 {module module=news qianshou=2 cache=0} {php $uids=explode(',', $t.xqsyh);} {$t.title} {if $t.qszt} 完成 {else} 籤收中 {/if} 以籤收:{$t.qianshou_total} / 需籤收: {intval(substr_count($t.xqsyh, ',') 1)} {if $t.qszt} 無需籤收 {else} 立即籤收 {/if} {/loop} {$debug}

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了