zblog开发常用的系统函数介绍

本文介绍一下zblog的常用函数,让新人开发也能少走弯路。

其实zblog很多功能系统都封装好,只需要简单调用一下就可以完成操作,当然一种操作可能会有很多种调用方法,这里我只介绍我认为最简单的方法。

文章相关

获取、修改文章

GetPost 函数

$aritcle = GetPost((int)2);   //获得文章对象,传入文章ID,必须用(int)转换为整数
echo '文章浏览数量'.$article->ViewNums;    //获得文章浏览数量

//修改文章
$article->Title = '新标题';   //修改文章内容
$article->Metas->keywords = '内容';   //修改扩展内容
$article->Save();  //执行保存

如果是修改文章内容,一般只需要三行代码:

  1. 获取文章对象  $article = GetPost((int)2)

  2. 设置新内容  $article->Title = 'xxx';

  3. 保存   $article->Save()

如果只是获取一个文章标题,简写方法:GetPost((int)2)->Title

不推荐用法:如果还要要调用其它内容,千万不能用同样的方法,比如:

echo '标题:'.GetPost((int)2)->Title;
echo '正文:'.GetPost((int)2)->Content;

这样多写一次,数据库就会多查询一次。正确的做法应该是将对象赋值给一个变量,再操作。

正确做法

$article = GetPost((int)2);
echo '标题:'.$article->Title;
echo '正文:'.$article->Content;

获取文章列表

GetList 函数

GetList(5,3);   //获取ID为3的分类中的5篇文章

不传入任何参数,默认获取网站最新的10篇文章

函数返回的值是数组,每个数组的值就是一篇文章的对象。可以用foreach进行遍历获取

foreach (GetList(5,3) as $article){
  echo '标题:'.$aricle->Title;
}

这里也可以直接赋值对象属性进行文章修改。

foreach (GetList(5,3) as $article){
  echo '标题:'.$aricle->Title;
  $article->Title = '新标题';
  $article->Save();
}

这个函数功能远远不止这些,更多用法点这里GetList函数用法详解

获取文章分类对象、作者对象、标签、相关文章

$aritcle = GetPost((int)2);  //文章对象
echo $article->Category->Name;     //文章分类名称
echo $article->Category->Url;    //文章分类url
echo $article->Author->StaticName;    //获取作者的昵称
echo $article->Author->Url;            //获取用户页面url
echo $article->TagsName;   //获取文章标签。形式:标签1,标签2,标签3
echo $article->Tags;       //获取文章标签,返回的是数组,用foreach遍历可获得标签url
echo $article->TagsCount;  //获取文章有多少个标签
$related = $article->RelatedList;    //获取相关文章(相关关系:相同标签)返回的是数组,用foreach遍历

上面获取分类名称、Url和作者昵称、Url这样的写法结果都正常,但是不推荐这样写。这样会让后台多执行一次数据库查询,应该将$article->Category赋值给一个变量,再访问变量的属性。

删除文章

$_GET['id'] = 2;  //设置文章ID
DelArticle();     //删除文章函数

很简单,就两行代码,就可以操作。

这上面的函数只能删除文章,不能删除页面。删除页面用函数:DelPage()

删除某个文章下的所有评论

DelArticle_Comments(2);     //设置文章ID

直接传入文章ID就可以删除

分类相关

获得、修改分类

$cate = $zbp->GetCategoryByID(3);   //根据分类ID
$cate = $zbp->GetCategoryByName('教程');  //根据分类名称
$cate = $zbp->GetCategoryByAlias('jiaocheng');  //根据分类别名
echo '分类名称'.$cate->Name;
echo '分类链接'.$cate->Url;

//修改分类名称
$cate->Name = '新名称';
$cate->Save();  //保存

获得子孙分类(获得向下的两层分类)

$cate = $zbp->GetCategoryByID(3);   //传入文章ID
$array = $cate->ChildrenCategories;  //获得子孙分类的数组对象
foreach ($array as $category){
  echo 'ID:'.$category->ID;
  echo '名称'.$category->Name;
}

如果ChildrenCategories获得的是一个空数组,必须在之前加载zbp对象。$zbp->Load();

获得父分类对象

$cate = $zbp->GetCategoryByID(3);
$parent = $cate->Parent;
echo '父分类名称:'.$parent->Name;

删除分类

$_GET['id'] = 3; //设置要删除的分类ID
DelCategory();   //执行删除函数

删除某个分类下的所有文章

DelCategory_Articles(3);  //删除分类ID为3的下面所有文章

用户相关

获得用户对象、修改用户

$member = $zbp->GetMemberByID(5);  //根据用户ID
$member = $zbp->GetMemberByName('admin');    //根据用户账号
$member = $zbp->GetMemberByNameOrAlias('花晨月夕');    //根据用户昵称
$member = $zbp->GetMemberByEmail('12345@qq.com');  //根据邮箱

$member->Email = '10000@qq.com';  //修改用户邮箱
$member->Save();  //保存

如果除了ID,如果传入的值,在表中包含多个,则只会返回其中一个。比如邮箱,如果多个用户是同一个邮箱,返回的只会是其中一个。

修改当前登录的用户数据

$zbp->user->Email = '23456@qq.com'; //修改邮箱
$zbp->user->Alias = '老王';  //修改昵称
$zbp->user->Save();   //保存修改

//模板里可以这样
$user->Email = '23456@qq.com'; //修改邮箱
$user->Alias = '老王';  //修改昵称
$user->Save();   //保存修改

删除用户

$_GET['id'] = 5; //设置要删除的用户ID
DelMember();

删除用户的数据

DelMember_AllData(5);   //传入用户的ID

删除用户下所有数据(包括文章、评论、附件)

其它

获取访客IP

echo GetGuestIP();   //154.54.18.188

获取用户浏览器UA

echo GetGuestAgent();   //Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36

获取url页面内容

echo GetHttpContent('https://www.baidu.com');   //返回html纯文本内容

有人会说file_get_contents()函数不就可以吗,但是万一你要的页面出现404 500这些错误,后台直接就报错了,除非你在传入其它参数来阻止报错。这么费事还不如直接用zblog的函数。如果出现错误,则返回null

获得参数值

GetVars('name','POST');  //就相当于 $_POST('name');
GetVars('act','GET');  //就相当于 $_GET('name');
GetVars('token','COOKIE');  //就相当于 $_COOKIE('token');
GetVars('token','XXX');  //就相当于 $_XXX('token');

尽量不要用$_XXX这样的方式去获取数据,万一这个key不存在就报错了。而这个函数不对,会直接返回null

输出json

/**
 * 以JSON形式输出错误信息.
 *
 * @param string $errorCode   错误编号
 * @param string $errorString 错误内容
 * @param object
 */
JsonError($errorCode, $errorString, $data);
JsonError(1,'上传成功',array('url'=>'https://abc.com/1.png'))
//输出json {"data":{"url":"https:\/\/abc.com\/1.png"},"err":{"code":1,"msg":"\u4e0a\u4f20\u6210\u529f","timestamp":1558428174}}

 

常用的也就是这些了。如果你还想了解什么,请在下面留言,我会回复并添加在文章中