Поле списка тегов в шаблонах Hakyll - PullRequest
0 голосов
/ 06 декабря 2018

Таким образом, у Hakyll уже есть tagsField для добавления в шаблоны, но он предварительно форматирует весь список тегов в строку HTML.Я мог бы написать пользовательский tagsField, но я бы хотел разделить мои проблемы: пусть Хакилл создаст список тегов для каждой страницы, а затем передаст его шаблону в listField, чтобы ямогу сослаться на него с помощью блока $for(tags)$ ... $tags$ ... $endfor$.

Я довольно новичок в Hakyll, и в целом я все еще новичок в Haskell, поэтому я не совсем понимаю, как набирать свою функцию.Любая помощь в этом направлении приветствуется.

1 Ответ

0 голосов
/ 03 мая 2019

Я только что понял, что это мой собственный вопрос.О, хорошо, вот ответ, который я нашел в случае, если кому-то еще это нужно.

Я не пробовал этого, но адаптируюсь от http://mattwetmore.me/posts/hakyll-list-metadata.html:

listContextWith :: Context String -> String -> Context a
listContextWith ctx s = listField s ctx $ do
    identifier <- getUnderlying
    metadata <- getMetadata identifier
    let metas = maybe [] (map trim . splitAll ",") $ M.lookup s metadata
    return $ map (\x -> Item (fromFilePath x) x) metas

listContext :: String -> Context a
listContext = listContextWith defaultContext

-- and in main, in the match postsPattern part:
tagContext = listContext "tags" <> defaultContext

Прочитать весь постчтобы попытаться это сделать.Это должно работать.

...