现在制作主题,喜欢在首页放上图片展示或图文形式,在emlog主题制作中要如何才能实现这种效果?" \5 d$ A4 ~' {% t, v
下面介绍了几种常用的方法,抛砖引玉,大家一起共同探导一下。
# @2 F- z6 X' h9 L# A' t, s% f, e% T- {8 {8 ^1 o" m5 m8 [
1、直接读取附件图片
4 @, V. A9 `( e% w# R6 Q$ a; X2 j( ^原理:这种方法就是直接判断附件的类型,并获取第一张图片的信息;如果没有图片附件,则显示默认图片或随机图片。, z p+ @1 e N. v3 v4 I. @* j
. B" d. |! q, z5 A
方法:先将获取附件图片的方法定义成一个函数,放在模板文件module.php中(代码如下),位置随便。- <?php
8 @ Y" o8 ?$ K0 L1 h$ N) a - //获取文章缩略图,先是自定义指定,然后是查找附件图片,最后是随机图片
* T! C% N, W7 S9 O/ f( T9 R' X - function sheli_fjimg($logid){
, h4 I' C/ R+ K7 u- R( q - $db = MySql::getInstance();2 O) _2 o0 u2 x0 i9 P- Q
- $thum_pic = EMLOG_ROOT.'/thumpic/'.$logid.'.jpg';
5 `* E1 P/ ?' u8 u; y/ m; l9 e! b" V1 H; O - if (is_file($thum_pic)) {$ n3 C" J+ l0 e; a
- $thum_url = BLOG_URL.'thumpic/'.$logid.'.jpg';
# v% a- j. K1 n, q% G5 E. i - }else{
4 c# s# t6 _9 b. _( E - $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";
2 V$ K/ e9 O* W - // die($sql);! e' V2 B& ^6 J! c2 D
- $img = $db->query($sqlimg);6 ^6 E7 x! m( U4 x: E
- while($roww = $db->fetch_array($img)){
3 N1 q! x- E& q! ]" h4 k6 g - $thum_url=BLOG_URL.substr($roww['filepath'],3,strlen($roww['filepath']));' p+ ~8 K; d2 t, _# u1 {
- }if (empty($thum_url)) {
9 h$ i6 @* M- Y - srand((double)microtime()*1000000); ; H, Y& {7 n7 {& h
- $randval = rand(0,9); 3 ?5 S k2 z% D2 ^8 j% g
- $thum_url = BLOG_URL.'content/templates/shuyong_net-sf/images/shuyong_net/'.$randval.'.jpg';} //随机图片路径
' `; G# L+ v. q5 y% ~0 c' x - }echo $thum_url;}
) e" N* o* F: F+ @5 y - ?>
复制代码 然后在你需要的地方,emlog一般是在log_list.php(当然也可以在你自己的文件)相应的地方插入下面代码:<img src="<?php sheli_fjimg($value['logid']); ?>" >. e9 U8 X/ L# Z" z( x3 \1 K7 `
优缺点:优点:上传图片无论是否插入了正文,都可以读取第一张显示。+ s) {) G7 V0 i# L. G6 ]
缺点:一是只能读取上传的第一张图片。
% h. ?' y, z0 z7 u
* F2 c4 H6 s/ Z8 ?2 p2.读取正文的第一张图片) \! |, @5 v. @0 i2 `) _6 A
原理:直接从正文代码——包括注释代码——中获取第一张图片的信息;如果正文中没有图片,则显示默认图片或者随机图片。
6 G) y) m3 w: W4 |% z* U) ?* {, S8 \方法:先将获取附件图片的方法定义成一个函数,放在模板文件module.php中(代码如下),位置随便。- <?php2 q9 Z- b2 E. O: w
- //获取文章中第一张图片,如果没有就调用随机图片
& E$ [" A; w" [8 s - function sheli_zwimg($str){: {2 L) ^8 o2 c7 ~0 D) m& s9 X( c3 P
- preg_match_all("/\<img.*?src\="(.*?)"[^>]*>/i", $str, $match);1 T4 V" [2 I7 }7 l2 p D
- if(!empty($match[1])){echo $match[1][0];}else{( ^; p: x- x2 k0 h
- echo TEMPLATE_URL . 'images/shuyong_net_wzimg/'.rand(1,20).'.jpg'; //随机图片路径及图片命名1.jpg……20.jpg$ J( f" m2 z: {# L( j! L# O5 O
- }}
3 t4 h2 v6 a2 U* B; n! ] - ?>
复制代码 在你需要的地方,emlog一般是在log_list.php(当然也可以在你自己的文件)相应的地方插入下面代码: <img src="<?php sheli_zwimg($value['content']); ?>"# c3 S) H) I0 W- _" u+ b L
以下代码为调用正文第一张图片,没有图片则自定义,也可以空白,直接放在你要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; ?>
复制代码
9 S. J3 Z. T5 f: l |