Sitecore 中打印设备布局的目的是什么(或我如何正确使用它)?

What is the purpose of Print device layout in Sitecore (or How do I use it properly)?

我在我的应用程序中创建了一个打印按钮,它打开了一个新的 window,通过将当前 url 附加到打印设备的 QueryString(?p=1 在我的case) 并加载它调用 window.print() 函数。但这是没有用的,因为当它打开一个新的window包含当前页面的打印设备布局时,用户输入的所有数据都会丢失。

我想不出可以使用打印设备布局并使用用户输入的数据预填充页面的方法。谁能帮我解决这个问题?

提前致谢。

您可以使用 javascript 将用户输入附加到打印 URL 查询字符串,例如:

var url = 'Current-Page-URL' + '?p=1' + '&input1=[INPUT1]'+ '&input2=[INPUT2]' etc..

然后在页面加载事件中,你可以在相应的text/dropdown元素中设置这些输入

如上所述,该设备是一组不同的演示文稿,可用于多种用途。在没有响应式设计的早年,我使用设备来渲染不同的移动设备。您可以使用设备来渲染 rss 提要或任何您想要的不同渲染集的地方。 另一个例子,如果您有多个站点并希望以不同方式呈现它们,您也可以使用设备。

Sitecore 非常灵活,这就是我如此喜欢它的原因。总有其他方法可以获得相同或相似的结果。从你的背景来看,我不知道你想要达到什么目的。如果我想要不同的演示文稿 这是我将研究的一些方法,Lavage 渲染规则,利用请求管道,在代码中交换渲染控件,在项目级别指定样式 sheet…

如果您能告诉我们您想要实现的目标,我相信有人会为您提供他们自己的解决方案。然后您将有更多选项可供选择,并获得最适合您的项目的选项。 希望对您有所帮助。

打印设备能够有一组不同的演示组件用于显示或打印。有时只使用打印样式表就足够了(也更容易),其中 hides/restyles 某些元素:

显然设备适用于非表单页面,或已发布的表单并显示确认页面(没有输入框,只有文本)。

另一种方法是使用渲染参数在每个控件上进行设置,这可以添加 .print.do-not-print class 以供打印样式表使用。然后您必须在样式表中设置适当的样式以隐藏这些元素。但是请注意,您不能从父级设置 iframe 内容的样式,如果要在打印时设置样式,则必须 link iframe 源页面的单独样式表。