从页面

时间:2016-09-27 20:05:56

标签: haskell hakyll

我正在和Hakyll建立一个网站。我成功创建了一个RSS源,显示每个帖子显示由<!--more-->分隔的预告片部分。

我的问题是这个预告片部分显示在这些帖子的完整(模板化)页面中。而且我希望只有<!--more-->而不是之前。

---
title: My Post
author: JeanJouX
date: 2016-09-06
tags: Haskell
---

The teaser of my post to be shown in the RSS feed. Not in the full page.

<!--more-->

The rest of the post to be shown in the full page of my website

哈基尔可以做到这一点吗?

2 个答案:

答案 0 :(得分:4)

我不相信有一种方法可以做到哈基尔的内容。

我认为你有两种选择:

  • 写一个从文档中剥离预告片的传递,然后再将其呈现在自己的页面上

  • 将预告片保留在实际页面中,但使用CSS隐藏它

第一个选项可能更好,但需要使用字符串操作和Hakyll编译器。如果您想要一个地方开始,请查看使用teaserFieldWithSeparator中的needlePrefix函数的Hakyll.Core.Util.String实施,从文档正文中提取预告片。你必须做相反的事情:提取所有但是预告片。

如果您采用这种方法,您可以将其贡献给Hakyll,为将来想要做同样事情的人节省工作。

另一种选择是更容易但更容易。你可以用一些CSS类将所有的teasers包装在一个div中:

<div class="teaser">
Some text.
</div>
<!--more-->

然后,在您的页面模板中,添加隐藏预告片段落的CSS规则:

.teaser {
  display : none;
}

文本仍然在页面的HTML中,因此这不是理想的解决方案,但您可以使其无需编写任何Hakyll代码即可使用。

答案 1 :(得分:0)

如果您只是将此预告片文本放在单独的元数据字段中,那么可能会更容易一些?像

teaserField

然后您不再需要$description$。您已经拥有namespace GymCheckList { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private List<string> data1 = new List<string>(); public List<string> Data1 { get { return data1; } } 所需的一切,您可以在rss中使用html元标记中的任何地方。