首先声明,本代码是网友“秦时明月”写的,拿来同大家分享下,
1、EMlog本身有最新文章模块的,但是调用时要注意格式,正确的调用格式如下:
<?php widget_newlog('');?>
说明:这里有个问题,调用的最新文章数必须从后台--》设置选项中设置,而且由于模块本身有html代码所以使用时只需将代码粘贴在需要显示的位置即可!
2、独立最新文章代码分两个步骤进行:分别修改modul.php和需要显示页面,如:log_list.php
首先,将如下代码复制在modul.php的最后!
<?php //最新文章调用函数 function liangxin_new($num){ $db=MySql::getInstance(); $logs = $db->query("SELECT gid ,title FROM " . DB_PREFIX . "blog WHERE hide='n' and type='blog' ORDER BY date DESC LIMIT 0, $num"); while ($row = $db->fetch_array($logs)){ $row['title'] = htmlspecialchars($row['title']); ?> <li><a href="<?php echo Url::log($row['gid']); ?>" title="<?php echo $row['title']; ?>" ><?php echo $row['title']; ?></a></li> <?php } } ?>
其次,在需要显示最新文章的页面模版,如log_list.php的相应位置添加如下调用代码:
<?php liangxin_new(5);?> //小括号内的数字5是表示调用数据的条数,可自行修改!
说明:此处的调用代码是独立的,只能调用到数据,而没有html框架代码,所以自由度更大一些!但是也有其缺点,此代码无法显示置顶文章的效果(如果有置顶文章时不会在此区域显示出来)。如有此需要的请看第3种方法。
3、独立最新文章代码(支持置顶功能)也分两个步骤进行:分别修改modul.php和需要显示页面,如:log_list.php
首先,将如下代码复制在modul.php的最后!
<?php //自己写的最新文章调用函数2 function liangxin_new($num){ $db=MySql::getInstance(); $n = $db->query("SELECT gid ,title FROM " . DB_PREFIX . "blog WHERE hide='n' and type='blog' and top='y' ORDER BY date DESC"); $nums = $db->num_rows($n); while ($rows = $db->fetch_array($n)){ $rows['title'] = htmlspecialchars($rows['title']); ?> <li>[顶]<a href="<?php echo Url::log($rows['gid']); ?>" title="<?php echo $rows['title']; ?>" ><?php echo $rows['title']; ?></a></li> <?php } $log_range = ''; if($nums > 0){ $n2 = $db->query("SELECT gid FROM " . DB_PREFIX . "blog WHERE hide='n' and type='blog' and top='y' ORDER BY date DESC"); while ($rows2 = $db->fetch_array($n2)){ $log_range.= ' gid != '.$rows2['gid'].' and '; } } $log_num = $num - $nums; $logs = $db->query("SELECT gid ,title FROM " . DB_PREFIX . "blog WHERE hide='n' and type='blog' and $log_range gid != 0 ORDER BY date DESC LIMIT 0, $log_num"); while ($row = $db->fetch_array($logs)){ $row['title'] = htmlspecialchars($row['title']); ?> <li><a href="<?php echo Url::log($row['gid']); ?>" title="<?php echo $row['title']; ?>" ><?php echo $row['title']; ?></a></li> <?php } } ?>
如果大家觉得上面代码太复杂了,“秦时明月”还提供了优化版的,如下:
<?php //自己写的最新文章调用函数2 function my_new2($num){ $db=MySql::getInstance(); $logs = $db->query("SELECT gid, title, top FROM " . DB_PREFIX . "blog WHERE hide='n' and type='blog' ORDER BY top DESC, date DESC LIMIT 0, $num"); while ($row = $db->fetch_array($logs)){ $row['title'] = htmlspecialchars($row['title']); ?> <li><?php if($row['top']=='y'){echo '[顶]';} ?><a href="<?php echo Url::log($row['gid']); ?>" title="<?php echo $row['title']; ?>" ><?php echo $row['title']; ?></a></li> <?php } } ?>
如果大家需要对【顶】进行定义样式可以写为
{echo '<span class="ding">[顶]</span>';} ?>
其次,在需要显示最新文章的页面模版,如log_list.php的相应位置添加如下调用代码:
<?php liangxin_new(5);?> //小括号内的数字5是表示调用数据的条数,可自行修改! 说明:使用第2、3种方法有一个局限或者说一个bug:置顶文章数量不要大于这个最新文章显示数量
走过,进来围观下