我在 Stackoverflow 中看到了一篇关于如何通过覆盖复选框的可见性来隐藏 Sitecore 发布中的“发布子项”的帖子。这真的很好,当内容树中有大量内容时,它可以避免很多性能问题。
是否可以动态隐藏此复选框?因为,作为一名开发人员,我需要在部署时发布其他 Sitecore 项目(模板、设置等)。因此“发布子项目”对我来说是一个必不可少的功能。我仍然需要对内容编辑器隐藏它。我怎样才能完成这项任务?(如果有一个安全配置来控制对该功能的访问,那将是理想的)
我在 Stackoverflow 中看到了一篇关于如何通过覆盖复选框的可见性来隐藏 Sitecore 发布中的“发布子项”的帖子。这真的很好,当内容树中有大量内容时,它可以避免很多性能问题。
是否可以动态隐藏此复选框?因为,作为一名开发人员,我需要在部署时发布其他 Sitecore 项目(模板、设置等)。因此“发布子项目”对我来说是一个必不可少的功能。我仍然需要对内容编辑器隐藏它。我怎样才能完成这项任务?(如果有一个安全配置来控制对该功能的访问,那将是理想的)
首先,您需要从文件夹更改 Publish.xml 文件:
\web\sitecore\shell\Applications\Dialogs\Publish\
您需要更改 CodeBeside 它看起来像这样:
<WizardForm CodeBeside="YourNameSpace.CustomPublishForm,YourAssembly">
您的课程将是:
class CustomPublishForm:PublishForm
{
public CustomPublishForm()
: base()
{
}
protected override void OnLoad(System.EventArgs e)
{
base.OnLoad(e);
//you need to change here with users that you want to see CheckBox
if (Sitecore.Context.User.Name.Equals("lorenipsum"))
{
base.PublishChildren.Visible = true;
}else
{
base.PublishChildren.Visible = false;
}
}
}
我测试过,这个解决方案运行良好,您只需对您的要求进行微小的更改。
这是帖子:Sitecore - 从发布弹出窗口中隐藏“发布子项”
您需要将CodeBeside
属性从更改Sitecore.Shell.Applications.Dialogs.Publish.PublishForm,Sitecore.Client
为您自己的包含该属性的类。在您自己的类中覆盖您需要的任何方法,以便逻辑根据您的需要显示或隐藏框,例如用户处于某个角色。
请注意,此类修改会使升级更加困难。复制Publish.xml
并从一个新按钮触发它让每个人都清楚,这不是 Sitecore 而是您自己的逻辑。