现在位置:首页 » emlog相关 »

Emlog博客首页调用分类文章图文显示的方法

心岛发布于2018年03月18日  分类: emlog相关  浏览:128 人次  评论:0 

温馨提示:所有代码在模板默认上测试,因为不确定模板是否有相同代码出现,所以在运行上可能会出错。以下代码是本人根据舍力博客提供代码进行的转载和完善,欢迎大家一起讨论。

第一种方法:模板的module.php文件中放入如下代码(该方法调用出来后没有设定TAG位置,需要此标签的请用第二种方法):

<?php //调用分类文章,图文显示
function liangxin_tw($sort, $num){$db = MySql::getInstance();
$sql = "SELECT gid,title,date,content,sortid,views,comnum FROM ".DB_PREFIX."blog WHERE sortid=".$sort." AND hide='n' ORDER BY `date` DESC LIMIT 0,$num";
$go = $db->query($sql);while($row = $db->fetch_array($go)){
$img_url = EMPLATE_URL.'images/'.rand(1,5).'.jpg';//无图片时将自动调用模版目录中images文件加中1.jpg.....5.jpg,这里可以自由修改
if(pic_thumb($row['content'])){$img_url = pic_thumb($row['content']);//查找正文第一张图片
}elseif(picthumb($row['gid'])){$img_url = picthumb($row['gid']);//查找附件第一张图片
}else{$img_url;}?>
<li><p><a href="<?php echo Url::log($row['gid']);?>"><img src="<?php echo $img_url;?>" /></p><span><?php echo $row['title'];?></a></span></li>
<?php }}function picthumb($blogid) {$db = MySql::getInstance();$sql = "SELECT * FROM ".DB_PREFIX."attachment WHERE blogid=".$blogid." AND (`filepath` LIKE '%jpg' OR `filepath` LIKE '%gif' OR `filepath` LIKE '%png') ORDER BY `aid` ASC LIMIT 0,1";$imgs = $db->query($sql);while($row = $db->fetch_array($imgs)){$pict.= ''.BLOG_URL.substr($row['filepath'],3,strlen($row['filepath'])).'';}return $pict;}function pic_thumb($content){preg_match_all("/\<img.*?src\=\"(.*?)\"[^>]*>/i", $content, $img);$imgsrc = !empty($img[1]) ? $img[1][0] : '';if($imgsrc):return $imgsrc;endif;}?>

调用方式:<?php liangxin_tw(1,10);?>;其中1表示分类id,10表示数量

第二种方法:在模板的module.php文件中放入如下代码:

<?php //全局匹配正文中的图片并存入imgsrc中
function img_zw($content){preg_match_all("|<img[^>]+src=\"([^>\"]+)\"?[^>]*>|is", $content, $img);$imgsrc = !empty($img[1]) ? $img[1][0] : '';if($imgsrc):return $imgsrc;endif;}
//Custom: 获取附件第一张图片
function img_fj($logid){$db = MySql::getInstance();$sql = "SELECT * FROM ".DB_PREFIX."attachment WHERE blogid=".$logid." AND (`filepath` LIKE '%jpg' OR `filepath` LIKE '%gif' OR `filepath` LIKE '%png') ORDER BY `aid` ASC LIMIT 0,1";$imgs = $db->query($sql);$img_path = "";while($row = $db->fetch_array($imgs)){$img_path .= BLOG_URL.substr($row['filepath'],3,strlen($row['filepath']));}
return $img_path;}?>

然后在需要显示的位置放入下面代码

<?php 
$db = MySql::getInstance();
$sql = "SELECT gid,title,date,content,sortid,views,comnum FROM ".DB_PREFIX."blog WHERE type='blog' and sortid='1' and hide='n' ORDER BY `date` DESC LIMIT 0,15";//sortid='1'中的1为分类ID,LIMIT 0,15中的15为显示数量 
$go = $db->query($sql);while($value = $db->fetch_array($go)){
$img_url='';if(img_zw($value['content'])){$img_url = img_zw($value['content']);}elseif(img_fj($value['gid'])){$img_url = img_fj($value['gid']);}else{$img_url = TEMPLATE_URL.'images/'.rand(1,5).'.jpg';}//无图片时将自动调用模版目录中images文件加中1.jpg.....5.jpg,大家可以按需修改。
$gid=$value['gid'];
global $CACHE;$log_cache_tags = $CACHE->readCache('logtags');
if (!empty($log_cache_tags[$gid])){$tag = '标签:';foreach ($log_cache_tags[$gid] as $sl){$tag .= "<a href=\"".Url::tag($sl['tagurl'])."\">".$sl['tagname'].'</a> ';}}
?>

提示:上面的代码需要插入log_list.php或者index.php中需要显示的位置,之后紧接着就是根据自己设定的html格式套用以下标签,套用完毕后一定不要忘记最后的

图片:<img src="<?php echo $img_url;?>" />
日期:<?php echo gmdate('Y-m-d',$value['date']);?>
标签:<?php echo $tag;?>
标题:<a href="<?php echo Url::log($value['gid']);?>" title="<?php echo $value['title'];?>"><?php echo $value['title'];?></a>
描述:<?php echo subString(strip_tags(str_replace(array("\n","&nbsp;"," "),"",$value['content'])),0,80);?>
<?php }?>

以上两种方式我均在自己的博客站点中进行过测试,完全没问题,大家可以放心使用,如有问题可以留言一起交流!

赞 (1次) 打赏
X
打赏方式:
  • 支付宝
  • 微信
  • QQ红包

打开支付宝扫一扫

本文由心岛原创或编辑,转载请保留链接【Emlog博客首页调用分类文章图文显示的方法】http://www.liangxin.name/?post=228
本文百度已收录,点此查看详细信息
本文标签: 代码修改 网站建设 模板修改
上一篇: 关于emlog幻灯片/轮播图片调用分类置顶/首页置顶文章的方法
下一篇:【生活小常识】关于艾灸贴的最全利用方法
目前有 0 条评论