我只需要显示部分博客文章...“阅读更多”链接到完整博客文章。
HOME:使用“阅读更多”列出最后5个部分/介绍帖子。
这可以在Docpad中使用吗?
谢谢..
答案 0 :(得分:4)
五月
getCuttedContent: (content) ->
i = content.search('<!-- Read more -->')
if i >= 0
content[0..i-1]
else
content
hasReadMore: (content) ->
content.search('<!-- Read more -->') >= 0
和
<% posts = @getCollection('posts') %>
<% for i in [@document.page.startIdx...@document.page.endIdx]: %>
<% document = posts.at(i).toJSON() %>
<article class="post">
<h3><span class="posts_date"><%= @formatDate(document.date) %></span> <a class="post_head" href="<%= document.url %>"><%= document.title %></a></h3>
<div class="post-content"><%- @getCuttedContent(String(document.contentRenderedWithoutLayouts)) %></div>
<% if @hasReadMore(String(document.contentRenderedWithoutLayouts)): %>
<div class="read_more"><a href="<%= document.url %>"><strong>Читать далее →</strong></a></div>
<% end %>
</article>
<% end %>
并添加到帖子
<!-- Read more -->
答案 1 :(得分:0)
如果您想要更多以及之后的不同页面,可以将paged plugin与Splitting a Document into Multiple Pages example一起使用。
类似的东西:
---
title: 'Awesome Pages Post'
layout: 'default'
isPaged: true
pageCount: 2
pageSize: 1
---
<!-- Page Content -->
before more
if @document.page.number is 1: %>
after more
<% end %>
<!-- Page Listing -->
<% if @document.page.number is 0: %>
<!-- Read More Button -->
<a href="<%= @getNextPage() %>">Read more!</a></li>
<% end %>
应该做的伎俩。然后,您可以通过逻辑来处理不同的用例。例如,两个页面上都会显示“更多”文本。但是如果你愿意的话,你可以在“是第0页”检查中“更多地”包装以防止这种情况。
答案 2 :(得分:0)
如果您不想在之前的更多页面之前使用不同的页面,而只是想在内容列表中使用更多页面之前。您可以将更多内容放在“描述”元数据属性中,如下所示:
--- cson
title: 'Awesome Pages Post"
layout: "default"
description: """
Before more content goes here
"""
---
After more content (the actual page content) goes here.
然后,您可以执行以下操作在内容列表中显示说明:
<%- post.description or post.contentRenderedWithoutLayouts %>
如果未定义说明,将回退到完整内容。
如果您希望能够呈现您的描述,那么text plugin就可以了。请将您的元数据描述更改为以下内容:
description: """
<t render="markdown">With the text plugin **you can render anything providing you have the plugins installed!**</t>
"""
答案 3 :(得分:0)
正如另一种方式,我在docpad.coffee中使用以下方法截断帖子以在主页上显示。它处理链接,这将使文本看起来更长,并且你可能最终打破中间的块引用
public void toast(int millisec, String msg) {
Handler handler = null;
final Toast[] toasts = new Toast[1];
for(int i = 0; i < millisec; i+=2000) {
toasts[0] = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
toasts[0].show();
if(handler == null) {
handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toasts[0].cancel();
}
}, millisec);
}
}
}