github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/blogweb_gin/models/home_model.go (about) 1 package models 2 3 import ( 4 "bytes" 5 "fmt" 6 "github.com/qiuhoude/go-web/blogweb_gin/config" 7 "github.com/qiuhoude/go-web/blogweb_gin/utils" 8 "html/template" 9 "strconv" 10 "strings" 11 ) 12 13 type HomeBlockParam struct { 14 Id int 15 Title string 16 Tags []TagLink 17 Short string 18 Content string 19 Author string 20 CreateTime string 21 //查看文章的地址 22 Link string 23 24 //修改文章的地址 25 UpdateLink string 26 DeleteLink string 27 28 //记录是否登录 29 IsLogin bool 30 } 31 32 type TagLink struct { 33 TagName string 34 TagUrl string 35 } 36 37 type HomeFooterPageCode struct { 38 HasPre bool 39 HasNext bool 40 ShowPage string 41 PreLink string 42 NextLink string 43 } 44 45 //----------首页显示内容--------- 46 func MakeHomeBlocks(articles []Article, isLogin bool) template.HTML { 47 htmlHome := "" 48 for _, art := range articles { 49 //将数据库model转换为首页模板所需要的model 50 homeParam := HomeBlockParam{} 51 homeParam.Id = art.Id 52 homeParam.Title = art.Title 53 homeParam.Tags = createTagsLinks(art.Tags) 54 //logs.Info.Println("tag-->", art.Tags) 55 homeParam.Short = art.Short 56 homeParam.Content = art.Content 57 homeParam.Author = art.Author 58 homeParam.CreateTime = utils.SwitchTimeStampToData(art.Createtime) 59 homeParam.Link = "/article/show/" + strconv.Itoa(art.Id) 60 homeParam.UpdateLink = "/article/update?id=" + strconv.Itoa(art.Id) 61 homeParam.DeleteLink = "/article/delete?id=" + strconv.Itoa(art.Id) 62 homeParam.IsLogin = isLogin 63 64 //处理变量 65 //ParseFile解析该文件,用于插入变量 66 t, _ := template.ParseFiles("views/home_block.html") 67 buffer := bytes.Buffer{} 68 //就是将html文件里面的比那两替换为穿进去的数据 69 t.Execute(&buffer, homeParam) 70 htmlHome += buffer.String() 71 } 72 //logs.Info.Println("htmlHome-->", htmlHome) 73 return template.HTML(htmlHome) 74 } 75 76 //将tags字符串转化成首页模板所需要的数据结构 77 func createTagsLinks(tags string) []TagLink { 78 var tagLink []TagLink 79 tagsPamar := strings.Split(tags, "&") 80 for _, tag := range tagsPamar { 81 tagLink = append(tagLink, TagLink{tag, "/?tag=" + tag}) 82 } 83 return tagLink 84 } 85 86 //-----------翻页----------- 87 //page是当前的页数 88 func ConfigHomeFooterPageCode(page int) HomeFooterPageCode { 89 pageCode := HomeFooterPageCode{} 90 //查询出总的条数 91 num := GetArticleRowsNum() 92 //从配置文件中读取每页显示的条数 93 //pageRow := config.NUM 94 //计算出总页数 95 allPageNum := (num-1)/config.NUM + 1 96 97 pageCode.ShowPage = fmt.Sprintf("%d/%d", page, allPageNum) 98 99 //当前页数小于等于1,那么上一页的按钮不能点击 100 if page <= 1 { 101 pageCode.HasPre = false 102 } else { 103 pageCode.HasPre = true 104 } 105 106 //当前页数大于等于总页数,那么下一页的按钮不能点击 107 if page >= allPageNum { 108 pageCode.HasNext = false 109 } else { 110 pageCode.HasNext = true 111 } 112 113 pageCode.PreLink = "/?page=" + strconv.Itoa(page-1) 114 pageCode.NextLink = "/?page=" + strconv.Itoa(page+1) 115 return pageCode 116 117 }