如何让Sitecore(和我的浏览器)使用Print布局?

时间:2011-10-04 20:26:27

标签: asp.net http printing sitecore sitecore6

我正在添加一些支持,以一种友好的打印机友好格式打印我网站的特定页面。所以我做的第一件事就是创建一个或多或少的空白布局,我可以将内容放入其中。然后我转到了一个内容页面,并将此布局分配给演示文稿详细信息中的“打印”设备。

这似乎没有做任何事情。在定义任何打印设置之前,我仍然在打印预览中获得完全相同的输出。说实话,我不完全确定这应该如何运作。据推测,我的浏览器必须再次使用新的用户代理(???)请求页面,以使Sitecore返回页面的不同呈现...但我已经尝试过Firefox,Chrome和IE并获得同样的不受欢迎从我的“默认”设备输出。

必须遗漏一些明显的东西吗?

2 个答案:

答案 0 :(得分:5)

默认情况下,当您要打印的页面上有?p=1查询字符串值时,将使用打印设备。浏览器中的打印预览只是使用默认设备预览页面。

尝试将该查询字符串放在地址中,看看是否得到了您期望的布局。

如您所述,可以通过浏览器代理切换设备,但这在此处没有用。这主要用于移动设备检测。

答案 1 :(得分:0)

要在锚点击时动态访问打印设备,请执行以下操作

的Default.aspx

  <asp:HyperLink ID="hlPrintLink" runat="server">
</asp:hyperlink>

// default.aspx.cs

HospitalDirectionsPageItem objHospital = Sitecore.Context.Item;   
         string deviceName = "print";
            DeviceItem deviceItem = Sitecore.Context.Database.Resources.Devices.GetAll().Where(d => d.Name.ToLower() == deviceName.ToLower()).First();

            if (deviceItem != null)
            {
                hlPrintLink.NavigateUrl = Sitecore.Links.LinkManager.GetItemUrl(objHospital) + "?" + deviceItem.QueryString;

            }