這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
做到這裡其實可以說教程已經基本完結了。
但是,還記得我們首頁Home右上方那個提醒了嗎?這一章我們就來做一下這個東西。
它提醒的是最近1小時內有更新。那麼首先我們的blog.go裡面應該有一個按照時間查詢的方法。
好,開啟blog.go添加方法:
func (dao *Dao) FindBlogsByDate(start time.Time) int{blogCollection := dao.session.DB(DbName).C(BlogCollection)query := blogCollection.Find(bson.M{"cdate":bson.M{"$gte": start}})cnt,err := query.Count();if err!=nil{revel.WARN.Printf("Unable to Count blog: error %v", err)}return cnt}
注意,mgo的find方法裡面,我們嵌套了兩個bson.M,第一個很好理解,第二個裡面的$gte是什麼呢?大於等於(>=)恩,沒錯,mgo還有其它的操作,大家如果有需要就去找一找(話說 ,博主為了找到這個,可是費了一番時間的),最後這個方法只是返回一個統計而已,對啊,我們只需要這樣就夠了。
在controllers/app.go的Index方法裡面,修改一下:
func (c App) Index() revel.Result {dao, err := models.NewDao()if err != nil {c.Response.Status = 500return c.RenderError(err)}defer dao.Close()//dao := models.NewDao(c.MongoSession)blogs := dao.FindBlogs()now := time.Now().Add(-1 * time.Hour)recentCnt :=dao.FindBlogsByDate(now);return c.Render(blogs,recentCnt)}
我們在最後加了點時間處理的東西,對,目前時間減去1小時,就是我們想要的結果 。不要忘了在import裡面加入我們的time包
好,開啟views下的header.html將裡面的:
<li class="{{.home}}"> <a href="/" >Home</a> <span class="navbar-news " title="最近1小時有1個更新">1</span> </li>
修改為:
<li class="{{.home}}"> <a href="/" >Home</a> {{if .recentCnt}} {{if gt .recentCnt 0}} <span class="navbar-news " title="最近1小時有{{.recentCnt}}個更新">{{.recentCnt}}</span> {{end}} {{end}} </li>
ok,趕快試試把。
最後,這裡說一下,最後的RSS,暫時就不做了,我還不知到具體怎麼做,去看了golang.usr的訂閱,就只是一個xml的頁面,這個不是我想要的,先這樣把。
源碼地址:https://github.com/joveth/GBlog
交流QQ:158325682