我在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,这对于主页。我怎样才能做到这一点?
因此,与开发时的大多数事情一样...... 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
的方式。