现在制作主题,喜欢在首页放上图片展示或图文形式,在emlog主题制作中要如何才能实现这种效果?7 ^# x- O) r1 i: f3 V# r) X% A8 q
下面介绍了几种常用的方法,抛砖引玉,大家一起共同探导一下。! l( c* U* I5 F( Z
" N: i1 s( M0 B& n1、直接读取附件图片
6 l. u' ^% `0 n原理:这种方法就是直接判断附件的类型,并获取第一张图片的信息;如果没有图片附件,则显示默认图片或随机图片。 M# V+ P$ j* Z
, q$ {) J0 e' H; _方法:先将获取附件图片的方法定义成一个函数,放在模板文件module.php中(代码如下),位置随便。- <?php
; j4 q& I/ w' z6 b - //获取文章缩略图,先是自定义指定,然后是查找附件图片,最后是随机图片3 M" j! ]2 w6 z7 I
- function sheli_fjimg($logid){
6 Y/ A# ]% L; I4 X- \5 k* R - $db = MySql::getInstance();6 y7 c; \! }7 U( j
- $thum_pic = EMLOG_ROOT.'/thumpic/'.$logid.'.jpg';
. ?, J2 g$ t8 L8 |6 Y - if (is_file($thum_pic)) {8 k" I- }3 h; ]2 |# J" A3 Z
- $thum_url = BLOG_URL.'thumpic/'.$logid.'.jpg';
) H- U2 r- n+ G3 t+ B* S; d - }else{" }5 X5 v+ W8 n0 ~% O W2 V
- $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";
5 L$ h+ m* }/ ^( O& I - // die($sql);
5 y1 B9 p/ q; J" x: X2 e - $img = $db->query($sqlimg);0 p8 k$ X; l3 o, F3 [$ S' d7 @+ |9 R
- while($roww = $db->fetch_array($img)){
, R- C8 d5 v& J! m( r& B: s+ k. N - $thum_url=BLOG_URL.substr($roww['filepath'],3,strlen($roww['filepath']));
`4 [* L! P' z B+ E5 w: P5 _+ y - }if (empty($thum_url)) {, a8 [4 J# n+ i8 r3 t
- srand((double)microtime()*1000000);
, z2 H) F4 L( I6 U7 X - $randval = rand(0,9); # G: p/ r- j1 ?' B/ z
- $thum_url = BLOG_URL.'content/templates/shuyong_net-sf/images/shuyong_net/'.$randval.'.jpg';} //随机图片路径
' E. ?. A# o! J/ x' e$ H' p" P - }echo $thum_url;}
' w6 e" t$ q' n: ?. L9 ^ m8 o0 w - ?>
复制代码 然后在你需要的地方,emlog一般是在log_list.php(当然也可以在你自己的文件)相应的地方插入下面代码:<img src="<?php sheli_fjimg($value['logid']); ?>" ># `! T4 S; C+ B v
优缺点:优点:上传图片无论是否插入了正文,都可以读取第一张显示。+ U, {5 U u2 C+ g: u3 g
缺点:一是只能读取上传的第一张图片。
% E( O/ `# {1 s( o% S0 K
1 R @3 @% U. m: R. g% C, _2.读取正文的第一张图片4 x7 k' B7 g6 l0 [# O
原理:直接从正文代码——包括注释代码——中获取第一张图片的信息;如果正文中没有图片,则显示默认图片或者随机图片。
9 y8 u L2 Q, ~8 Y! f方法:先将获取附件图片的方法定义成一个函数,放在模板文件module.php中(代码如下),位置随便。- <?php, A. H' v2 w$ b
- //获取文章中第一张图片,如果没有就调用随机图片% f, ` t+ `2 a4 p! l
- function sheli_zwimg($str){0 B4 T0 h9 u; Z1 ?" q" _, A, ~# ~" b
- preg_match_all("/\<img.*?src\="(.*?)"[^>]*>/i", $str, $match);
6 f1 x$ X+ P- @8 J% Y2 z/ H; |% [" z - if(!empty($match[1])){echo $match[1][0];}else{
5 e% R" ^5 S- B: `7 I* j7 {$ Q - echo TEMPLATE_URL . 'images/shuyong_net_wzimg/'.rand(1,20).'.jpg'; //随机图片路径及图片命名1.jpg……20.jpg# t( e A$ i/ T1 G
- }}! g3 g1 g! T" g( U
- ?>
复制代码 在你需要的地方,emlog一般是在log_list.php(当然也可以在你自己的文件)相应的地方插入下面代码: <img src="<?php sheli_zwimg($value['content']); ?>"
' k) d0 g) j0 W 以下代码为调用正文第一张图片,没有图片则自定义,也可以空白,直接放在你要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; ?>
复制代码
" |. k! O- X2 N+ k1 r |