在Octobercms blogPosts组件上,我想传递一个变量。我想使用以下方式更改postsPerPage值:
{variable name="blog_postnumber" label="postnumber" tab="postnumber" type="number"}{/variable}
关于静态布局。因此,我希望能够在静态页面上使用此字段更改postsPerPage组件值。
我使用带有blogPosts组件的部分组件。在组件postsPerPage字段上,我插入变量。
postsPerPage = "{{ blog_postnumber }}"
然后,我尝试在静态页面的字段中插入一个数字,但无法正常工作。关于如何在组件上传递变量的任何想法?
答案 0 :(得分:0)
如果在组件的will be used or not
方法中获取了该属性,将使用您传递给变量onRender
的变量/属性,这将非常棘手,如果在onRun
上使用了该属性,它将不会使用。 (其OctoberCMS设计)
在
blogPosts
中用于onRun
组件,因此当您传递{% component 'blogPosts' postsPerPage="2" %}
这样的属性时,将不会使用它,但是要处理此问题,我们需要其他解决方法
对于部分中包含的组件blogPosts
的(1),您需要使用param中的属性。检查屏幕截图。
(2)在静态布局的代码部分中,您需要添加此代码
public function onStart() {
$statiPage = $this->page->apiBag['staticPage'];
// default posts per page
$defaultBlogPost = 5;
if(isset($statiPage->viewBag['blog_postnumber'])) {
// fetching value from the page field
$defaultBlogPost = intVal($statiPage->viewBag['blog_postnumber']);
$router = $this->getRouter();
// combine with existing params
$router->setParameters(['myBlogPerPage' => $defaultBlogPost] + $router->getParameters());
}
}
在标记部分字段中
{variable name="blog_postnumber" label="postnumber" tab="postnumber" type="number"}{/variable}
(3)现在,您可以开始使用它设置变量值了,我们默认在代码部分 5 对其进行设置,以覆盖它,在页面的postnumber字段部分中指定值< / p>
它将开始工作。
如有疑问,请发表评论。