Emlog Pro自动获取文章封面图函数
说明
在更新Emlog Pro程序后,官方使用了Markdown编辑器,由于Markdown编辑器的特殊性,数据库中存储的是Markdown语法而不是HTML代码。因此,之前用于获取文章封面的函数无法再使用了,因此需要对此进行更新。
为了解决这个问题,需要修改获取文章封面的函数,以适应Markdown语法。具体来说可以找到之前的文章封面函数,参照以下代码根据自身模板的结构进行修改。
详情
代码支持获取EmlogPro的md编辑器代码格式的图片,也支持获取img标签的图片。
有设置文章封面就读取封面cover参数,没有设置封面就从正文里获取第一张图片作为封面,前两者都没有就返回随机封面。
1.模板module.php内添加以下函数:
<?php
/**
* 获取:指定文章的封面图
* @param $gid [文章id]
* @return $imgUrl 输出图片地址
*/
function getBlogCover($gid = null){
//缺省默认图,根据模板自行更改地址
$imgUrl = TEMPLATE_URL . 'static/img/random/' . rand(0, 9) . '.jpg';
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;
}
?>
2.在需要的位置添加如下调用代码:
<img src="<?php getBlogCover($value['logid']); ?>" rel="external nofollow" >
PHP实现通过公众号链接获取封面图
上一篇
3天前
网站添加一个百分比滚动条
下一篇
2天前