Повторно создать индивидуальный макет страницы без привидения?
-
10-12-2019 - |
Вопрос
У меня есть среда разработки, тестовая среда и производственная среда.Я разрабатываю пакеты в среде разработки и обновляю решение в тестовой среде.Как оказалось, мой PageLayout не менялся в зависимости от среды разработки.Я спросил коллегу, что может быть не так, и мы начали расследование.
Как оказалось, PageLayout не менялся и не менялся уже больше года.Но поле TaskDueDate не удалось, поскольку оно было написано на шведском языке.Поскольку это тестовая среда, я изменил поле в конструкторе SharePoint на правильное имя, и страницы, ссылающиеся на PageLayout, начали работать должным образом.
Поэтому мы с коллегой решили повторно перевести PageLayout в состояние Ghosted, чтобы иметь возможность развернуть его из пакета, созданного в нашей среде разработки.Я нашел полезное начало сценария и запустил его, чтобы проверить, что у меня получилось.
$site = Get-SPSite https://intranet.company.se
$web = $site.RootWeb
$pubSite = New-Object Microsoft.SharePoint.Publishing.PublishingSite($site)
$pageLayouts = $pubSite.PageLayouts
foreach ($pageLayout in $pageLayouts)
{
$file = $web.GetFile($pageLayout.ServerRelativeUrl)
if ($file.CustomizedPageStatus -eq "Customized")
{
Write-Host "Layout page name: " $file.Name
Write-Host " Status before: " $file.CustomizedPageStatus
#$file.RevertContentStream()
Write-Host " Status after: " $file.CustomizedPageStatus
}
}
$web.Dispose()
$site.Dispose()
Как оказалось, четыре из 20 макетов страниц были отключены в соответствии с приведенным выше сценарием.Это неожиданно, и я оказываюсь посередине.Должен ли я сохранить текущие UnGhosted PageLayouts в качестве резервной копии, повторно разместить их и посмотреть, что произойдет, или мне следует оставить их в режиме UnGhosted (неразвертываемом)?
Решение
Если это происходит исключительно в тестовой среде, а не в производственной среде (отсюда и «тест»), вы можете безопасно вернуть файловый поток, чтобы содержимое было получено из файловой системы.
Поскольку существует только 4 макета страниц, не размещенных на хосте, вы можете получить их из галереи главных страниц («загрузить копию») в этой среде и применить сравнение с тем, который есть в ваших пакетах, чтобы синхронизировать их и применить соответствующие изменения (если таковые имеются) в вашей среде разработки/пакете.(BeyondCompare — действительно хороший инструмент для этого, но их много).
А как насчет производственной среды?Есть ли у него неразмещенный/настраиваемый макет страницы?Смогли бы вы выполнить ту же операцию (запустить сценарий PowerShell), если бы это было так?
Наконец-то старое доброе stsadm -o backup
поскольку безопасная сеть всегда приветствуется, на случай, если произойдет что-то плохое (невозможно вернуть файловый поток, отсутствующий контент, добавленный вручную, сломанный макет страницы и т. д.).