Add the entry-kind pages and the actual entries to the generated sitemap
This commit is contained in:
parent
b121d461e2
commit
03cd1487fe
1 changed files with 29 additions and 7 deletions
|
@ -11,6 +11,9 @@ import Yesod.Sitemap
|
|||
|
||||
import Import
|
||||
|
||||
import Entry.Kind ( EntryKind, allEntryKinds )
|
||||
import Widget.Entry ( entryR )
|
||||
|
||||
-- These handlers embed files in the executable at compile time to avoid a
|
||||
-- runtime dependency, and for efficiency.
|
||||
|
||||
|
@ -27,10 +30,29 @@ getRobotsR :: Handler Text
|
|||
getRobotsR = robots SitemapR
|
||||
|
||||
getSitemapR :: Handler TypedContent
|
||||
getSitemapR = sitemap $ do
|
||||
getSitemapR = do
|
||||
entries <- runDB $ selectList [] [Desc EntryPublished]
|
||||
sitemap $ do
|
||||
yield SitemapUrl
|
||||
{ sitemapLoc = HomeR
|
||||
, sitemapLastMod = Nothing
|
||||
, sitemapChangeFreq = Just Daily
|
||||
, sitemapPriority = Nothing
|
||||
}
|
||||
yieldMany $ kindToSitemapUrl <$> allEntryKinds
|
||||
yieldMany $ entryToSitemapUrl <$> entries
|
||||
|
||||
kindToSitemapUrl :: EntryKind -> SitemapUrl (Route App)
|
||||
kindToSitemapUrl kind = SitemapUrl
|
||||
{ sitemapLoc = EntriesR kind
|
||||
, sitemapLastMod = Nothing
|
||||
, sitemapChangeFreq = Nothing
|
||||
, sitemapPriority = Nothing
|
||||
}
|
||||
entryToSitemapUrl :: Entity Entry -> SitemapUrl (Route App)
|
||||
entryToSitemapUrl entry = SitemapUrl
|
||||
{ sitemapLoc = entryR entry
|
||||
, sitemapLastMod = Just . entryUpdated . entityVal $ entry
|
||||
, sitemapChangeFreq = Nothing
|
||||
, sitemapPriority = Nothing
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue