在Docpad中仅显示部分博客文章,并显示“阅读更多”链接

时间:2013-06-18 18:20:18

标签: docpad

我只需要显示部分博客文章...“阅读更多”链接到完整博客文章。

HOME:使用“阅读更多”列出最后5个部分/介绍帖子。

这可以在Docpad中使用吗?

谢谢..

4 个答案:

答案 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

more

        <% 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>Читать далее &rarr;</strong></a></div>
                <% end %>
            </article>
        <% end %>

posts

并添加到帖子

 <!-- Read more -->

答案 1 :(得分:0)

如果您想要更多以及之后的不同页面,可以将paged pluginSplitting 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);
        }
    }
}