Как заставить Sitecore (и мой браузер) использовать макет Print? - PullRequest
5 голосов
/ 05 октября 2011

Я добавляю некоторую поддержку для печати определенных страниц моего сайта в удобном для печати формате. Поэтому первым делом я создал более-менее пустой макет, в который я могу перетаскивать контент. Затем я перешел на страницу содержимого и назначил этот макет устройству «Печать» в разделе «Сведения о презентации».

Это, похоже, ничего не делает. Я все еще получаю тот же вывод при предварительном просмотре, который видел до того, как определил какие-либо настройки печати. Если честно, я не совсем уверен, как это должно работать. Предположительно, мой браузер должен запросить страницу снова с новым пользовательским агентом (???), чтобы Sitecore возвратил другой рендеринг страницы ... но я попробовал Firefox, Chrome и IE и получил то же самое нежелательное вывод с моего устройства «по умолчанию».

Должно быть, упущено что-то очевидное?

Ответы [ 2 ]

5 голосов
/ 05 октября 2011

Устройство печати по умолчанию будет использоваться, когда на странице, которую вы хотите распечатать, есть значение строки запроса ?p=1. Предварительный просмотр в браузере - это просто предварительный просмотр страницы с устройством по умолчанию.

Попробуйте вставить эту строку запроса в адрес и посмотрите, получите ли вы ожидаемый макет.

Как вы заметили, есть возможность переключать устройство через агент браузера, но здесь это не будет полезным. Это будет в основном использоваться для обнаружения мобильных устройств.

0 голосов
/ 29 августа 2014

Чтобы динамически получить доступ к устройству печати по щелчку якоря, выполните следующие действия:

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;

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...