永久開源免費的PHP企業網站研發建設管控平臺

電腦雜談  發布時間:2019-09-03 15:02:57  來源:網絡整理

微信小程序cms系統教程_cms內容管理系統教程_cms內容管理系統

程序員應該具備的美德是“懶”cms內容管理系統教程,能用一行代碼搞定的,盡量不用兩行。

所以,剛開始研究PbootCMS制作小程序的之后,第一個想法就是封裝接口。

文件下載地址:

PbootCMS小程序接口封裝.zip

cms內容管理系統教程_cms內容管理系統_微信小程序cms系統教程

下面是封裝方法(封裝文件在文章最后提供下載,供各位參考)。

1、準備md5加密文件。

因為PbootCMS的簽名參數signature是經過雙層md5加密的,當然即使后臺WebAPI沒有開啟強制認證的,這一步可以跳過。

2、封裝一下API的請求方式。

cms內容管理系統教程_cms內容管理系統_微信小程序cms系統教程

//聲明一個請求函數
function?api_request(url,?method,?parm){
????
??var?apiurl????=?'******';??//域名?+?api.php
??var?appid?????=?'******';????//后臺WebAPI中設置的API認證用戶
??var?appsecret?=?'******';????//后臺WebAPI中設置的API認證密鑰
??
??var?timestamp?=?Date.parse(new?Date());
??????timestamp?=?timestamp?/?1000;????//獲取當前時間戳
?????
??var?signature?=?md5.hex_md5(md5.hex_md5(appid?+?appsecret?+?timestamp));????//構建signature
??var?data?=?{????//因為搜索、留言和表單需要用到POST方法,要通過data傳遞參數,所以先聲明data對象,方便后面添加
?????appid:?appid,
?????timestamp:?timestamp,
?????signature:?signature,
??};
??//根據請求方法構建Header
??if?(method?==?'POST')?{
????//POST方法,設置請求頭部
????var?header?=?{?'Content-Type':?'application/x-www-form-urlencoded;?charset=utf-8'?};
????//添加POST參數到data
????for?(var?i?in?parm)?{
???????data[i]?=?parm[i];
????}
??}?else?{
????//GET方法,設置請求頭部
????method?=?'GET';
????var?header?=?{?'Content-Type':?'application/json'?};
??}
??//通過promise返回數據
??var?promise?=?new?Promise(function(resolve,reject){
????????
????//小程序自帶的wx.request請求
????wx.request({
??????method:?method,
??????url:?apiurl?+?url,
??????header:?header,
??????data:?data,
????????????
??????//請求成功
??????success:?function(res){
????????????????
????????var?api_data?=?res.data;
????????if?(api_data.code?!=?1?&&?api_data.code?!=?0){
??????????reject({?error:?'數據請求失敗,請稍后重試',?code:?500?});
??????????return;
????????}?else?{
??????????resolve(api_data);
????????
????????}
??????
??????}?
????})
??})
????
????//返回數據
??return?promise;
}

3、封裝API模塊

//這里就比較簡單了,就是構建api的url,然后傳入到api_request這個請求函數,返回數據。
//下面是根據官方文檔中的api封裝的各個模塊,有些沒有實際測試檢查,可能有手誤什么的,大家自行調整即可。
//Api模塊
module.exports?=?{
??//獲取公司信息
??companyinfos:?function(){
????var?url?=?'/cms/company';
????return?api_request(url);
??},
??//獲取單個公司信息
??companyinfo:?function(name){
????var?url?=?'/cms/company/name/'?+?name;
????return?api_request(url);
??},
??//獲取網站信息
??siteinfos:?function(){
????var?url?=?'/cms/site';
????return?api_request(url);
??},
??//獲取單個網站信息
??siteinfo:?function(name){
????var?url?=?'/cms/site/name/'?+?name;
????return?api_request(name);
??},
??//獲取自定義標簽
??get_labels:?function(){
????var?url?=?'/cms/label';
????return?api_request(url);
??},
??//獲取單個自定義標簽
??get_label:?function(){
????var?url?=?'/cms/label/name/'?+?name;
????return?api_request(url);
??},
??//獲取幻燈片
??get_slide:?function(gid,num){
????var?url?=?'/cms/slide/gid/'?+?gid?+?'/num/'?+?num;
????return?api_request(url);
??},
??//獲取友情鏈接
??get_links:?function(gid,num){
????var?url?=?'/cms/link/gid/'?+?gid?+?'/num/'?+?num;
????return?api_request(url);
??},
??//獲取欄目列表
??get_navs:?function(){
????var?url?=?'/cms/nav';
????return?api_request(url);
??},
??//獲取指定欄目列表
??get_nav:?function(scode){
????var?url?=?'/cms/nav/scode/'?+?scode;
????return?api_request(url);
??},
??//獲取當前欄目
??get_current_cat:?function(scode){
????var?url?=?'/cms/sort/scode/'?+?scode;
????return?api_request(url);
??},
??//獲取內容列表
??get_list:?function(scode,num,order){
????if(?(?num?!=?''?)?&&?!order?){
??????var?url?=?'/list/'?+?scode?+?'/num/'?+?num;
????}?else?if(?!num?&&?(?order?!=?''?)?){
??????var?url?=?'/list/'?+?scode?+?'/order/'?+?order;
????}?else?if?(?(num?!=?'')?&&?(order?!=?'')?){
??????var?url?=?'/list/'?+?scode?+?'/num/'?+?num?+?'/order/'?+?order;
????}?else?{
??????var?url?=?'/list/'?+?scode;
????}
????return?api_request(url);
??},
??//獲取內容列表第*頁
??get_list_paged:?function?(scode,?paged,?num,?order)?{
????if?((num?!=?'')?&&?(order?==?''))?{
??????var?url?=?'/list/'?+?scode?+?'/num/'?+?num?+?'/page/'?+?paged;
????}?else?if?((num?==?'')?&&?(order?!=?''))?{
??????var?url?=?'/list/'?+?scode?+?'/order/'?+?order?+?'/page/'?+?paged;
????}?else?if?((num?!=?'')?&&?(order?!=?''))?{
??????var?url?=?'/list/'?+?scode?+?'/num/'?+?num?+?'/order/'?+?order?+?'/page/'?+?paged;
????}?else?{
??????var?url?=?'/list/'?+?scode?+?'/page/'?+?paged;
????}
????return?api_request(url);
??},
??//獲取指定內容
??get_content:?function(id){
????var?url?=?'/content/'?+?id;
????return?api_request(url);
??},
??//獲取指定內容多圖
??get_content_pics:?function(id){
????var?url?=?'/cms/pics/id/'?+?id;
????return?api_request(url);
??},
??//獲取搜索結果
??get_search_resault:?function(parm,num,order){?
????if?((num?!=?'')?&&?(order?==?''))?{
??????var?url?=?'/cms/search/'?+?'num/'?+?num;
????}?else?if?((num?==?'')?&&?(order?!=?''))?{
??????var?url?=?'/cms/search/'?+?'oder/'?+?order;
????}?else?if?((num?!=?'')?&&?(order?!=?''))?{
??????var?url?=?'/cms/search/num/'?+?num?+?'/order/'?+?order;
????}?else?{
??????var?url?=?'/cms/search/';
????}
????return?api_request(url,?'POST',?parm);
??},
??//提交留言
??add_message:?function(parm){
????var?url?=?'/cms/addmsg';
????return?api_request(url,?'POST',?parm);
??},
??//獲取留言內容
??get_message:?function(num){
????var?url?=?'/cms/msg/num/'?+?num;
????return?api_request(url);
??},
??//獲取留言內容第*頁
??get_message_paged:?function(num,paged){
????var?url?=?'/cms/msg/num/'?+?num?+?'/page/'?+?paged;
????return?api_request(url);
??},
??//提交表單
??add_form:?function(fcode,parm){
????var?url?=?'/cms/addform/fcode/'?+?fcode;
????return?api_request(url,?'POST',?parm);
??},
??//獲取表單內容
??get_form:?function(fcode){
????var?url?=?'/cms/form/fcode/'?+?fcode;
????return?api_request(url);
??},
??//獲取表單內容第*頁
??get_form_paged:?function(fcode,num,paged){
????var?url?=?'/cms/form/fcode/'?+?fcode?+?'/num/'?+?num?+?'/page/'?+?paged;
????return?api_request(url);
??},
}

4、完成了cms內容管理系統教程,就這樣簡單。

cms內容管理系統教程_cms內容管理系統_微信小程序cms系統教程

下面說明一下調用的方式:

1、在必須讀取數據的js頁面引入api文件,例如首頁的index.js

const?api?=?require('../../utils/api.js');??//路徑根據自己的實際情況調整

2、在生命周期函數--頁面讀取變量中使用api組件。

微信小程序cms系統教程_cms內容管理系統_cms內容管理系統教程

/**
*?生命周期函數--頁面加載
*/
onLoad:?function?(options)?{
????
????var?that?=?this;??//劃重點,這句千萬不要忘掉了。
????//api.模塊函數.then...來調用,這里companyinfos()是調用公司信息
????api.companyinfos().then(function?(rs)?{
??????//通過setData把獲取到的數據賦值到頁面初始數據的data對象,這樣就可以在wxml中使用數據了。
??????that.setData({
????????companyinfos:?rs.data,
??????})
??????//把獲取的數據輸出到控制臺看看,實際使用的時候刪除掉下面這行
??????console.log(rs.data);
????})
????
??},

3、控制臺截圖,可以發現公司信息的數據獲得順利,接下來就是綁定數據到頁面的事情了。

001.jpg

4、POST請求的使用方式。同樣在生命周期函數--頁面讀取變量中使用api組件。

//首先聲明一個對象,用來存儲需要通過POST傳遞過去的參數。比如搜索的keyword,scode,留言的字段等。
//這里演示的是搜索模塊,聲明對象,POST搜索的關鍵詞和指定分類。
var?search_obj?=?{
????'keyword':?'模板',
????'scode':?'3,5',
};
//get_search_resault需要傳入?搜索對象(也就是剛才聲明的),返回條數,排序方式。
//這里演示需要獲取的是分類3和5中的,關鍵詞是模板的5條信息。
api.get_search_resault(search_obj,?5,?'id').then(function?(rs)?{?
????that.setData({
??????search:?rs.data,
????})
????console.log(rs.data);
})

5、看看控制臺的圖片。

002.jpg

可以發現,已經獲得到分類3和分類5中的,關鍵詞是“模板”,并且根據id進行順序的前5條數據了。


本文來自電腦雜談,轉載請注明本文網址:
http://www.gefhbj.live/a/ruanjian/article-121568-1.html

    相關閱讀
    發表評論  請自覺遵守互聯網相關的政策法規,嚴禁發布、暴力、反動的言論

    熱點圖片
    拼命載入中...
    少林宝藏100在线客服 合伙生意很赚钱 萌兔代销赚钱吗 空洞骑士如何赚钱 做圆通快递代理点赚钱吗 养殖虾蟹技术赚钱不 ehs工程师赚钱吗 nba哪个队最赚钱 毕业生什么工作赚钱 开个什么门头赚钱 模拟器能用的赚钱软件下载 ih5怎么制作模板赚钱 打工不可能赚钱 做什么共享赚钱 边打工边赚钱的事 苹果手机用什么捕鱼软件赚钱最好用 开文教用品店赚钱吗 利润大吗