如何在Sulu CMS中添加智能内容模块?

3
我正在为一个Sulu应用程序创建主页的固定内容。
我已经创建了一个service页面类型,并且我还创建了一个在主页上使用的自定义类型,称为service_slider,它是从service页面创建的卡片的滑块。 service_slider类型包含一个名为servicessmart_content属性,管理员可以使用它来选择要在滑块中呈现为卡片的service页面。
当在管理部分手动选择服务页面时,这个功能运行良好,但是我在如何在固定内容中以编程方式实现这一点方面遇到了真正的困难。
我创建的主页固定内容如下所示:
$homeDocument->getStructure()->bind([

   //...

   'blocks' => [
        'type' => 'service_slider',
        'title_text' => 'Lorem ipsum',
        'services' => // ???
   ]
]);

为了清晰起见,智能内容属性 XML 的外观如下(简化版):
<property name="services" type="smart_content">
    <params>
        <param name="provider" value="pages"/>
    </params>
</property>

我尝试传递PageDocument对象和页面uuid,我查看了Sulu Rocks演示网站和代码,并尝试复制和修改他们在那里的内容(在DocumentFixture类中,他们有一个fixture将文章添加到博客帖子中,这是一个智能内容字段),但我所做的一切都导致了services数组为空,当我在twig中dump()输出内容时。

有人有什么建议吗?

1个回答

3
数据的结构在所有情况下都与保存页面时的PUTPOST请求相同。因此,当您不确定如何定义特定字段类型/内容类型的固定装置时,请参考保存页面的请求。
创建一个新页面,填写您感兴趣的字段,并查看您的浏览器如何将数据发送到终端点。这样,您就知道如何为固定装置构建数组的结构。
智能内容的情况如下:
'services' => [
    'dataSource' => '<uuid>',
    'sortBy' => 'published',
    'sortMethod' => 'asc',
],

请查看演示数据装置,以获取自我参考的智能内容。

https://github.com/sulu/sulu-demo/blob/a1b2c187916d743de73b1fdad9b3dcf3298cbe48/src/DataFixtures/Document/DocumentFixture.php#L95-L98

https://github.com/sulu/sulu-demo/blob/a1b2c187916d743de73b1fdad9b3dcf3298cbe48/src/DataFixtures/Document/DocumentFixture.php#L1274-L1276


太棒了,谢谢!在查看请求主体并匹配数据结构后,它的运行非常顺利。这是未来很有用的信息! - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接