我正在和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
哈基尔可以做到这一点吗?
答案 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元标记中的任何地方。