2017-10-31 5 views
0

私は非常に簡単なマークダウンアプリを持っていますが、私はページ上のインデックス記事の並び順を並べ替えるのに本当に苦労しています。どんな助けもありがたい。GO Lang markdown app

htmlが

<section> 
{{range .}} 
<a href="/{{.File}}"><h2 class="h2_home">{{.Title}} ({{.Date}})</h2></a> 
<p>{{.Summary}}</p> 
{{end}} 
</section> 

で、次のようにインデックスページのために行くものである

func getPosts() []Post { 
a := []Post{} 
files, _ := filepath.Glob("posts/*") 
for _, f := range files { 
    file := strings.Replace(f, "posts/", "", -1) 
    file = strings.Replace(file, ".md", "", -1) 
    fileread, _ := ioutil.ReadFile(f) 
    lines := strings.Split(string(fileread), "\n") 
    title := string(lines[0]) 
    date := string(lines[1]) 
    summary := string(lines[2]) 
    body := strings.Join(lines[3:len(lines)], "\n") 
    htmlBody := template.HTML(blackfriday.MarkdownCommon([]byte(body))) 

    a = append(a, Post{title, date, summary, htmlBody, file, nil}) 
} 
return a 
} 
それだけで動作しますが、私は本当に何かを入れたいとアイブ氏はしばらくの間、それを見ていない

発注をサポートするためにファイルに追加します。 .mdファイルがフォーマットされています

Hello Go lang markdown blog generator! 
12th Jan 2015 
This is a basic start to my own hosted go lang markdown static blog/ web generator. 
### Here I am... 

This entry is a no whistles Hello ... etc 

答えて

-2

sortパッケージのsort.Sliceを参照してください。使用方法はexampleです。これはちょうど、スライスのすべてのメンバーを並べ替えている

sort.Slice(a, func(i, j int) bool { return a[i].title < a[j].title }) 

そのタイトルに基づいて:あなたの特定の問題については

、あなたはとてもちょうどこのようにそれにsort.Sliceを呼び出し、スライス[]ポストを持っています(あなたがこのパッケージ内のPostのこのプライベートフィールドにアクセスできるとすれば、関数を追加する必要がない場合)。

あなたの投稿のスライスは、タイトル(または、あなたが望む他の基準、おそらくあなたはタイトルや日付の選択肢を与えることができます)でソートされます。マークダウンファイルを調整する必要はありません。

日付を並べ替える場合は、投稿が時間パッケージを最初に解析して文字列だけでなく、実際の日付を持つようにする必要があります。

ので、この(ポスト上の仮定time.Time)のようなものは:

// parse dates 
date,err := time.Parse("2nd Jan 2006",string(lines[1])) 
if err != nil { 
// deal with it 
} 

// later, sort the slice 
sort.Slice(a, func(i, j int) bool { return a[i].date.Before(a[j].date)}) 
+0

これは私が日付で値下げの行を選択する必要が私に多くの指針を与えるものではありません(それは次のようにフォーマットされプレーンテキスト)して並べ替えます。どのように正確にそれに近づくのですか? – adamprocter

+0

さらに詳しい情報を追加しました。 sortとtimeの両方のpkgドキュメントを読むのは簡単です。 –

+0

もう一度お試しいただきありがとうございます – adamprocter

関連する問題