【问题标题】:Dynamically grab latest post OctoberCMS Blog plugin动态抓取OctoberCMS博客的最新帖子
【发布时间】:2019-07-25 09:37:35
【问题描述】:

我在 10 月的论坛中提出了这个问题,但 12 小时后,帖子仍然显示“未获批准”,我不相信它是可见的。这是复制粘贴:

我要做的是抓取最新的博客文章并将其显示在网站的主页上。我目前可以使用我自己的部分帖子和blogPosts 组件注入的posts 变量来做到这一点,如下所示:

[blogPosts]
pageNumber = "{{ :page }}"
postsPerPage = 10
noPostsMessage = "No posts found"
sortOrder = "published_at desc"
categoryPage = "blog/category"
postPage = "blog/post"
==
{% partial 'site/blogpost' post=posts|last %}

但是,我想使用插件附带的默认 blogpost 组件来执行此操作,但是将帖子传递给组件的唯一方法似乎是使用 url 中的 slug,这并不是真的为主页工作。我怎样才能做到这一点?

【问题讨论】:

    标签: php octobercms octobercms-plugins


    【解决方案1】:

    因此,与开发中的大多数事情一样... RTFM。

    我需要的所有信息都在 10 月 CMS 文档的 Components 部分,当然我只是查看插件文档。我最终做的是用我自己的部分覆盖默认组件,然后将 slug 传递给组件。我想要使​​用默认部分的最初原因是我的自定义部分没有渲染图像,但默认值会。我只需要偷线<p>{{ post.content_html|raw }}</p> 就可以让它工作。

    [blogPost]
    ==
    ...
    {% component 'blogPost' slug=posts|last.slug %}
    

    其他信息:使用上述解决方案,您的模板会提取数据库中的所有博客文章,这意味着如果您有很多文章,这可能(并且很可能会)影响性能。原来十月模板有一个 PHP 部分。正确的做法是删除blogPosts 组件并获取最新的帖子模型,如下所示:

    [blogPost]
    ==
    <?
      use RainLab\Blog\Models\Post;
    
      function onStart()
      {
        $this['latestPost'] = Post::latest()->first();
      }
    ?>
    ==
    {% component 'blogPost' slug=latestPost.slug %} 
    

    注意:blogPost 组件注入了一个 post 变量,该变量将覆盖 PHP 部分中定义的 post 变量。这是变量标记为latestPost的方式。

    【讨论】:

      【解决方案2】:

      可以使用 blogPost 组件,但获取最后一篇文章并传递给它似乎不是一个好习惯

      您所做的是您可以使用[blogPosts] 组件并在那里设置适当的设置以获取最新/最后一个博客

      让它成为可能

      每页帖子数: 1 [因为我们只需要最近的帖子]

      下单: Published(desc) [您可以根据需要更改]

      现在只需使用适当的标记来呈现它使用默认值或只是覆盖来自定义它。

      注意:它将返回帖子列表,但在列表中将只有 1 post 所要求的,因此对于自定义标记只需注意这一点。

      如有任何疑问,请发表评论。

      【讨论】:

      • 很高兴知道这一点。昨晚在实施我的解决方案后,我在想,当我有 100 篇博客文章时,性能会发生什么变化?我会在我当前的实现中为一篇文章提取整个数据库。
      • 所以我只是尝试了这个,并且使用 blogPosts 组件它仍然会拉出整个博客列表。当您将“每页帖子”设置为“1”时会发生什么情况,它会对列表进行分页,每页仅放置一个列表。因此,在包含该组件的首页上,我有博客文章,然后是我不想要的下一页(1、2、3、4)的链接列表。
      • 幼虫分页使用limit,因此它只会在您的案例单个记录中获取给定的记录,但是会为记录计数触发额外的查询,您需要使用该组件,所以这是最简单的方法,如果有的话100 个帖子将仅获取其中 1 个和另一个查询总数,要删除您需要展开的链接并在页面中使用标记 [覆盖它]
      猜你喜欢
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      • 2012-12-14
      相关资源
      最近更新 更多