在工作箱中,我们有“打开”和“预览”功能。 是否可以修改“打开”功能以在新的浏览器选项卡中打开内容编辑器项,而不是在弹出窗口中显示“内容编辑器”?
答案 0 :(得分:3)
这是可能的:
首先,找出用于工作箱的代码。这可以通过打开Workbox.xml(位于webroot / sitecore / shell / Applications / Workbox)文件来完成。
你会看到像
<CodeBeside Type="Sitecore.Shell.Applications.Workbox.WorkboxForm,Sitecore.Client"/>
通过在WorkboxForm类上使用Reflector,我可以看到在工作区中单击“打开”时会发生以下情况:
webControl["Click"] = string.Concat(new object[] { "Open(\"", item.ID, "\", \"", item.Language, "\", \"", item.Version, "\")" });
因此,您需要创建自己的WorkboxForm版本,继承Sitecore的WorkboxForm类并覆盖Open方法,如下所示:
protected new void Open(string id, string language, string version)
{
// Your code goes here
}
在Workbox.xml中,将CodeBeside更改为指向新类。
有关工作箱中自定义功能的更多信息,我建议您阅读this文章,其中包含很多详细信息,以及工作箱中的其他方法。
StackOverflow上还有另一个有用的question。对已接受答案的评论指出,您可以将Workbox.xml文件放入/ sitecore / shell / override。
请注意,这是基于Sitecore 6.5更新5,在其他版本中可能略有不同。
答案 1 :(得分:0)
在Appconfig / Commands.config中,您可以找到与它们相关的命令和类。 我已经反映了一些命令,比如预览,打开并了解内部发生的事情。
e.g。名称=&#34;项目:开放&#34;类型=&#34; Sitecore.Shell.Framework.Commands.ContentEditor.OpenItem,Sitecore.Kernel&#34;
我已经超越了&#34; Open&#34; mwthod在工作箱中按如下方式打开新选项卡中的内容编辑器项
...
UrlString urlString = new UrlString("/sitecore/shell/Applications/Content%20Editor");
urlString.Append("id", id);
urlString.Append("vs", version);
urlString.Append("ro", sectionId);
urlString.Append("la", language);
urlString.Append("fo", id);
SheerResponse.Eval("window.open('" + (object)urlString + "', '_blank')");
...
它有效!!!!!