我在十月的论坛上问了这个问题,但是12个小时后,该帖子仍然显示“未经批准”,而且我认为它不可见。这是一个复制粘贴:
我想做的就是获取最新的博客文章,并将其显示在网站的主页上。目前,我可以使用自己的局部帖子和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中的子弹,但这并不是真的为主页工作。我该如何实现?
答案 0 :(得分:1)
可以使用blogPost组件,但是获取最后一个子句并传递给它似乎不是一个好习惯
您要做的是可以使用[blogPosts]
组件并在那里进行适当设置以获取最新/最新博客
使其成为可能
每页的帖子: 1
[因为我们只需要最新的帖子]
发布订单: Published(desc)
[您可以根据需要进行更改]
现在只需使用适当的标记即可使用默认标记进行渲染,或者仅重写即可对其进行自定义。
注意:它将返回帖子列表,但是在列表中将仅按需
1 post
,因此自定义标记就可以解决。
如有疑问,请发表评论。
答案 1 :(得分:0)
因此,与开发中的大多数事情一样……RTFM。
我需要的所有信息都在October CMS文档的Components部分中,当然,我只在查看插件文档。我最终要做的是用我自己的默认组件部分覆盖,然后将块传递给该组件。我最初想使用默认部分的原因是我的自定义部分不渲染图像,但是默认部分会渲染图像。我只需要窃取<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
的方式。