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"  >
THE END
喜欢就支持一下吧
点赞26 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容