现在制作主题,喜欢在首页放上图片展示或图文形式,在emlog主题制作中要如何才能实现这种效果?* T/ W, f% w w3 N# P
下面介绍了几种常用的方法,抛砖引玉,大家一起共同探导一下。
# G0 A2 ?% L& Y' X+ I+ s1 o# r7 c3 A5 |, y" D# T
1、直接读取附件图片. v- ]# b2 q* h# e
原理:这种方法就是直接判断附件的类型,并获取第一张图片的信息;如果没有图片附件,则显示默认图片或随机图片。9 w: K5 d5 c( C" i: j9 r1 U
5 Y& q* X8 `/ [ Y, Y6 S+ F
方法:先将获取附件图片的方法定义成一个函数,放在模板文件module.php中(代码如下),位置随便。- <?php
/ y7 ^0 C! K, {' c$ ]" U z3 w - //获取文章缩略图,先是自定义指定,然后是查找附件图片,最后是随机图片: x |9 q# P) Y
- function sheli_fjimg($logid){3 e- y, r) [* `1 j
- $db = MySql::getInstance();
; A$ J& s2 v/ N" p0 w, X* [; | - $thum_pic = EMLOG_ROOT.'/thumpic/'.$logid.'.jpg';$ T* r" I, D+ f
- if (is_file($thum_pic)) {% u }2 z* z4 ]9 ~: R; H/ [
- $thum_url = BLOG_URL.'thumpic/'.$logid.'.jpg'; - c: l4 g! I8 f
- }else{
- U: M. E) n/ u* j4 M* ]& h: C - $sqlimg = "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";, q W; }0 y5 c$ s
- // die($sql);, {. ~ A {; v: G l* K9 G
- $img = $db->query($sqlimg);( d, {$ G. ?$ c* Q0 H
- while($roww = $db->fetch_array($img)){. S. z; S" l0 @# D( h& G
- $thum_url=BLOG_URL.substr($roww['filepath'],3,strlen($roww['filepath']));
2 m# P2 i4 V4 M* U- P' ? - }if (empty($thum_url)) {% }/ r8 w+ P8 q
- srand((double)microtime()*1000000); ( C* Y5 _4 l5 k$ i7 H2 S
- $randval = rand(0,9);
9 s( f; R1 _& T# N# E5 ^- [ - $thum_url = BLOG_URL.'content/templates/shuyong_net-sf/images/shuyong_net/'.$randval.'.jpg';} //随机图片路径
* j- W3 {% B) }& z# D - }echo $thum_url;} j* \8 ~2 o; g9 \" Y+ ?
- ?>
复制代码 然后在你需要的地方,emlog一般是在log_list.php(当然也可以在你自己的文件)相应的地方插入下面代码:<img src="<?php sheli_fjimg($value['logid']); ?>" >( L |* x2 C" B* B; A
优缺点:优点:上传图片无论是否插入了正文,都可以读取第一张显示。" R0 n: y' u$ i' R/ ^
缺点:一是只能读取上传的第一张图片。- ~1 u4 {$ E) T: m
+ i: i3 F& _+ n; ^7 L% Z
2.读取正文的第一张图片
" x! Y2 u) p2 S原理:直接从正文代码——包括注释代码——中获取第一张图片的信息;如果正文中没有图片,则显示默认图片或者随机图片。' M8 z/ W+ j4 T4 s! Y+ U
方法:先将获取附件图片的方法定义成一个函数,放在模板文件module.php中(代码如下),位置随便。- <?php4 F: V! l: m/ V0 y) H
- //获取文章中第一张图片,如果没有就调用随机图片. i) C4 P! i& D+ b Z; z
- function sheli_zwimg($str){
7 J* {& z' s5 x9 x# l! [- a g - preg_match_all("/\<img.*?src\="(.*?)"[^>]*>/i", $str, $match);( J0 ~" t# ^! i
- if(!empty($match[1])){echo $match[1][0];}else{
: i& [6 [, \1 g/ h U* d! E. N - echo TEMPLATE_URL . 'images/shuyong_net_wzimg/'.rand(1,20).'.jpg'; //随机图片路径及图片命名1.jpg……20.jpg# i- }6 X& q8 S7 O* O( G$ k
- }}
: E4 P0 m4 R& K# Q! ?) y! z* L) Z - ?>
复制代码 在你需要的地方,emlog一般是在log_list.php(当然也可以在你自己的文件)相应的地方插入下面代码: <img src="<?php sheli_zwimg($value['content']); ?>"
. }$ [ C0 w% [* P" n, J8 f 以下代码为调用正文第一张图片,没有图片则自定义,也可以空白,直接放在你要log_list.php对应位置即可。- <?php $imgsrc = preg_match_all("|<img[^>]+src="([^>"]+)"?[^>]*>|is", $value['content'], $img);$imgsrc = !empty($img[1]) ? $img[1][0] : ''; ?><?php if($imgsrc): ?><img src="<?php echo $imgsrc; ?>"><?php else: ?><img src="<?php echo TEMPLATE_URL;?>images/news.jpg" alt="暂无图片" /><?php endif; ?>
复制代码
, O( B$ g7 ]0 C# Y |