emlog完美增加热门日志功能

晚上比较闲,就想来对博客emlog3.4.0 进行热门日志功能的开发。

废话不说,看我的做法。

 

1. 首先就后台博客管理模块下的 Widgets 功能页面添加一个类似已有的随机日志或最新日志的热门日志选择。

方法:在/admin/views/default/widgets.php页面的大概136行添加如下代码


<form action="widgets.php?action=setwg&wg=hot_log" method="post">
    <div class="widget-line" id="hot_log">
        <div class="widget-top">
            <li class="widget-title">热门日志</li>
            <li class="widget-act-add"></li>
            <li class="widget-act-del"></li>
        </div>
        <div class="widget-control">
            <li>标题</li>
            <li><input type="text" name="title" value="<?php echo $customWgTitle['hot_log']; ?>"  /></li>
            <li>首页显示热门日志数</li>
            <li><input maxlength="5" size="10" value="<?php echo $index_hotlognum; ?>" name="index_hotlognum" /> <input type="submit" name="" value="更改" class="submit" /></li>
        </div>
    </div>
    </form>

这样子即在后台管理的widgets设置中有了热门日志的设置功能,当然,这只是空壳。接下来


2.使第一步界面中的设置能生效。

方法:在/admin/widgets.php大概104行添加如下代码


case 'hot_log':
            $index_hotlognum = isset($_POST['index_hotlognum']) ? intval($_POST['index_hotlognum']) : 20;
            $DB->query("update ".DB_PREFIX."options set option_value='$index_hotlognum' where option_name='index_hotlognum'");
            break;

另外还需在数据库中的options表里添加一条记录:index_hotlognum  5    ,初始数字可以先随便设之后后台可再设置。然后再 Widgets管理添加热门日志块到右侧(即设置前台可显示)。


3.如此下来后台设置功能已结束!剩下步骤是使前台可显示,且继续看贱··

方法:在/model/class.blog.php里添加如下函数


    /**
     * 获取指定数统计热门日志
     *
     * @param int $num
     * @return array
     */
    function getHotLog($num)
    {
        $sql = "SELECT gid,title,views FROM ".DB_PREFIX."blog WHERE hide='n' and type='blog' ORDER BY views desc LIMIT 0, $num";
        $res = $this->db->query($sql);
        $logs = array();
        while($row = $this->db->fetch_array($res))
        {
            $row['gid'] = intval($row['gid']);
            $row['title'] = htmlspecialchars($row['title']);
            $row['views'] = intval($row['views']);
            $logs[] = $row;
        }
        return $logs;
    }
 

接着在/content/templates/当前主题/module.php 文件里添加一方法


<?php
//widget:随机日志
function widget_hot_log($title){
    global $index_hotlognum, $emBlog;
    if (!isset($emBlog))
    {
        global $DB;
        require_once(EMLOG_ROOT.'/model/class.blog.php');
        $emBlog = new emBlog($DB);
    }
    $randLogs = $emBlog->getHotLog($index_hotlognum);?>
    <li>
    <h3><?php echo $title; ?></h3>
    <ul id="randlog">
    <?php foreach($randLogs as $value): ?>
    <li><a href="<?php echo BLOG_URL; ?>?post=<?php echo $value['gid']; ?>"><?php echo $value['title']; ?></a><?php echo $value['views']; ?></li>
    <?php endforeach; ?>
    </ul>
    </li>
<?php }?>
 

 

如此下来便可实现emlog显示热门日志的功能!

 

如果你有更好的方法欢迎留言一起沟通哦~~ ^_^