Прегледайте датите на публикациите, за да направите архив в DocPad

Ето някакъв псевдокод на това, което искам да постигна:

for year in post.date
    h1 year
    for month in post.date
        h2 month
        ul
            li post entry

Това е псевдокодът. Аз обаче нямам достатъчно опит, за да постигна това. Файлът, в който ще се случи това, е този: https://github.com/Greduan/eduantech.docpad/blob/master/src/documents/posts.html.eco

И ще бъде на eco език. Използвам и Moment.js, в случай че е необходимо.

Дори и да не предоставите точния код, общата насока ще бъде много ценена. :)

РЕДАКТИРАНЕ: Това, което бих искал да постигна, е нещо подобно на това: http://swannodette.github.io/archive.html

РЕДАКТИРАНЕ 2: Ето част от кода, който измислих:

for post in @getCollection('posts').toJSON()

    for year in post.date
        h1 @moment(post.date).format('YYYY')

        for month in post.date
            h2 @moment(post.date).format('MMMM')
            ul ->
                li ->
                    @postDatetime(post.date, 'll') + ' » '
                    a href:'post.url', post.title

Засега просто не извежда нищо. Така че мисля, че просто съм сбъркал някои от имената на променливите, което предполагам, че съм направил. Оценявам всяка помощ. :)

Между другото не се притеснявайте за функцията @postDatetime. Това работи без проблеми някъде другаде. :)


person greduan    schedule 06.08.2013    source източник
comment
Искате ли да групирате списъците с публикации по годината и след това по месеца? Или искате да изведете публикация по година и месец?   -  person balupton    schedule 07.08.2013
comment
@balupton искам да ги групират по месеци и години, да. Благодаря за вашата помощ. :)   -  person greduan    schedule 07.08.2013


Отговори (1)


Ако вече сте сортирали публикациите си по дата, колекцията ви вече е групирана по година, месец. Всичко, което трябва да направите, е да преминете през цялата колекция и да вмъкнете заглавките на годината и месеца, когато стойностите за година/месец се променят. Нещо като това:

yr = -1 //temporary vars for storing current year value in loop
mnth = -1 //same for month value
monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]

div style:'text-align:left;font-size:20px;width:500px;margin-right:auto;margin-left:auto', ->

for post in @getCollection('posts').toJSON()
    if post.date.getFullYear() isnt yr
        yr = post.date.getFullYear()
        mnth = -1 
        h1 yr.toString()
    if post.date.getMonth() isnt mnth
        mnth = post.date.getMonth() 
        h2 style:'padding-left:10px;', monthNames[mnth]
        ul style:'padding-left:50px;', ->
    li ->
        post.date.toDateString()

Това звучи ли като това, което преследвате?

person Steve Mc    schedule 12.09.2013
comment
Точно сега си взех почивка от уебсайта си за малко, но веднага щом мога, ще разгледам това, засега изглежда, че прави това, от което се нуждая, ще се върна с обратна връзка по-късно. :) - person greduan; 12.09.2013
comment
Това работи страхотно! Ще направя някои промени в него, за да изведа това, което искам, но постига точно това, което исках. Благодаря много! :) - person greduan; 16.09.2013