【问题标题】:October CMS Blog Plugin | How can I limit the amount of blog posts shown on a specific page?十月 CMS 博客插件 |如何限制特定页面上显示的博客文章数量?
【发布时间】:2017-01-10 10:15:26
【问题描述】:

所以,我目前正在为一家企业开发一个网站,他们希望实施新闻提要。他们的媒体人员可以用来写故事的东西,而无需通过我自己来发布它们。我已求助于 10 月 CMS,以博客的形式实现此功能,因为它可以满足企业的需求。

但是,除了博客,他们还希望预览显示在网站主页上的最新故事。

现在,我已经设法在主页上放置了已发布博客文章的列表,但它会像往常一样以分页形式显示已发布的每篇博客文章。

有没有办法限制此博客文章提要,使其仅显示最近发布的 3 或 4 篇博客文章?

-- 编辑--

你好,

我正在编辑这个问题,以通知遇到它的任何人,我已经找到了一个可供其他人使用的解决方法。

为了实现所需的“最近的故事”效果,我将特定页面设置为每页仅显示 4 个帖子,当您有超过该数量的帖子时,会触发分页显示。

这样,我使用 jQuery 来隐藏分页,这样用户就无法访问它。最终结果是最近的 4 篇博文在任何所需页面上创建“最近的故事”提要。

我仍然愿意接受有关如何实现此功能的其他建议。

谢谢。

【问题讨论】:

    标签: php content-management-system blogs octobercms


    【解决方案1】:

    是和不是。有一种方法可以限制Posts 组件显示的帖子数量,正如您在将Posts 组件放入CMS 页面后,属性检查器可以看到的那样。但是,您不能让组件只显示设置的帖子数量,因为它在内部使用perPage 参数进行分页。

    你想要在这里做的技巧是覆盖你的组件使用的部分。

    为简单起见,假设您的 index.htm 部分中有以下标记:

    title = "Index"
    url = "/"
    layout = "default"
    is_hidden = 0
    
    [blogPosts blogPostsRecent]
    pageNumber = 1
    postsPerPage = 4
    ==
    
    <!-- Here we display the component's partial output -->
    {% component 'blogPostsRecent' %}
    

    这应该看起来与您目前的代码非常相似(可能在博客文章组件的配置方面有所不同)。但乐趣现在开始。正如Overriding component partials 部分中的文档所述,如果您在主题的partials/ 文件夹(即partials/blogPostsRecent/)中创建了一个文件夹blogPostsRecent/,并在其中创建了一个名为default.htm 的文件(即partials/blogPostsRecent/default.htm),您可以覆盖组件部分。

    博客插件默认posts部分是这样的

    {% set posts = __SELF__.posts %}
    <ul class="post-list">
        {% for post in posts %}
            <li>
                <h3><a href="{{ post.url }}">{{ post.title }}</a></h3>
    
                <p class="info">
                    Posted
                    {% if post.categories.count %} in {% endif %}
                    {% for category in post.categories %}
                        <a href="{{ category.url }}">{{ category.name }}</a>{% if not loop.last %}, {% endif %}
                    {% endfor %}
                    on {{ post.published_at|date('M d, Y') }}
                </p>
    
                <p class="excerpt">{{ post.summary }}</p>
            </li>
        {% else %}
            <li class="no-data">{{ noPostsMessage }}</li>
        {% endfor %}
    </ul>
    
    {% if posts.lastPage > 1 %}
        <ul class="pagination">
            {% if posts.currentPage > 1 %}
                <li><a href="{{ this.page.baseFileName|page({ (pageParam): (posts.currentPage-1) }) }}">&larr; Prev</a></li>
            {% endif %}
    
            {% for page in 1..posts.lastPage %}
                <li class="{{ posts.currentPage == page ? 'active' : null }}">
                    <a href="{{ this.page.baseFileName|page({ (pageParam): page }) }}">{{ page }}</a>
                </li>
            {% endfor %}
    
            {% if posts.lastPage > posts.currentPage %}
                <li><a href="{{ this.page.baseFileName|page({ (pageParam): (posts.currentPage+1) }) }}">Next &rarr;</a></li>
            {% endif %}
        </ul>
    {% endif %}
    

    这段代码的后半部分对您来说很重要,因为它呈现了分页。只需删除它,瞧,不再有分页,您将显示 (4) 个最新帖子。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-26
      • 2020-02-25
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-26
      • 1970-01-01
      相关资源
      最近更新 更多