前言

自从Cherish更新到最新版本后,作者取消了首页文章随机封面图,所以,本站目前使用的是API接口。
但是,为了以后能更好的折腾,所以记录下Emlog如何根据文章gid获取文章封面。

php

/**
 * 获取:指定文章的封面图
 * @param $gid [文章id]
 * @return $imgUrl 输出图片地址,无封面展示默认图
 */
function getBlogCover($gid = null){
//缺省默认图,自行更改地址
$imgUrl = TEMPLATE_URL.'static/images/default/noLoad.svg';
if(!empty($gid)){
$db = Database::getInstance();
$sql = "SELECT content,cover FROM ".DB_PREFIX."blog WHERE gid='$gid'";
$data = $db->once_fetch_array($sql);
if(!empty($data['cover'])){
$imgUrl = ltrim($data['cover'], '.');
}else{
$regExp_1 = '|!\[(.*)\]\((.+)\)|i';
$regExp_2 = '|<img[^>]+src=\"([^>\"]+)\"?[^>]*>|is';
preg_match($regExp_1, $data['content'], $regExp_1_Arr);
preg_match($regExp_2, $data['content'], $regExp_2_Arr);
if(isset($regExp_1_Arr[2]) && isset($regExp_2_Arr[1])){
$place_1 = strpos($data['content'], $regExp_1_Arr[2]);
$place_2 = strpos($data['content'], $regExp_2_Arr[1]);
if($place_1 < $place_2){
$imgUrl = @$regExp_1_Arr[2];
}
$imgUrl = @$regExp_2_Arr[1];
}elseif(isset($regExp_1_Arr[2])){
$imgUrl = @$regExp_1_Arr[2];
}elseif(isset($regExp_2_Arr[1])){
$imgUrl = @$regExp_2_Arr[1];
}
}
}
return $imgUrl;
}

使用教程

将函数完全复制到模板文件中的module.php文件中任意位置即可,很多模板的代码是很乱的,填写时请注意,不要填写错误。

调用方法:

//可在循环中调用或单独调用都可以
<?= getBlogCover(你的文章id); ?>