动态抓取最新发布的OctoberCMS Blog插件

问题描述 投票:2回答:2

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

我想要做的是抓住最新的博客文章并将其显示在网站的主页上。我现在可以使用我自己的post partial和由posts组件注入的blogPosts变量来完成它,如下所示:

[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
2个回答
1
投票

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

你做的是你可以使用[blogPosts]组件并在那里设置适当的设置,以获得最新/最后的博客

使它成为可能

enter image description here

每页的帖子:1 [因为我们只需要最后一篇帖子]

发布订单:Published(desc) [你可以根据需要改变]

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

注意:它将返回帖子列表,但在列表中将只有1 post按要求,所以自定义标记只需要处理。

如果有任何疑问请评论。


0
投票

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

我需要的所有信息都在十月CMS文档的Components部分,当然我只是在查看插件文档。我最终做的是用我自己覆盖默认组件partial,然后将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的方式。

© www.soinside.com 2019 - 2024. All rights reserved.