如何在Javascript中获取Sitecore 6模板名称或ID?
我正在为Sitecore制作一个第三方Javascript工具,需要根据当前编辑页面的模板修改其行为 到目前为止,我一直在使用此脚本获取模板的名称:如何在Javascript中获取Sitecore 6模板名称或ID?,javascript,templates,sitecore,sitecore6,Javascript,Templates,Sitecore,Sitecore6,我正在为Sitecore制作一个第三方Javascript工具,需要根据当前编辑页面的模板修改其行为 到目前为止,我一直在使用此脚本获取模板的名称: jQuery(".scEditorSectionPanelCell a[onclick*='shell:edittemplate']")[0].innerHTML.match(/\/?([^/]+?)$/i)[1]; 一点解释: 编辑页面时,会出现一段称为“快速信息”的段落(如果翻译错误,则表示歉意-不使用英语Sitecore)。在本段中,有一个
jQuery(".scEditorSectionPanelCell a[onclick*='shell:edittemplate']")[0].innerHTML.match(/\/?([^/]+?)$/i)[1];
一点解释:
编辑页面时,会出现一段称为“快速信息”的段落(如果翻译错误,则表示歉意-不使用英语Sitecore)。在本段中,有一个指向编辑当前模板的直接链接-这是我使用jQuery获取的链接:
<td>
<a href="#" onclick="javascript:scForm.postRequest('','','','shell:edittemplate');return false">
/sitecore/templates/Imported/[NAME-OF-TEMPLATE]
</a> -
<input class="scEditorHeaderQuickInfoInputID" readonly="readonly" onclick="javascript:this.select();return false"
value="{[ID-OF-TEMPLATE]}">
</td>
-
从中我得到了带有正则表达式的模板的名称。如果我愿意,我还可以从同级
元素获取模板ID
问题是,并非所有用户都能看到“快速信息”段落
当“快速信息”不可见时,对如何获取模板名称或ID有何建议?我没有访问底层ASP.NET代码的权限,因此解决方案需要严格使用Javascript。Sitecore附带一个Web服务,您可以使用该服务获取此信息。但是,我没有设置安全性,以在用户无法访问快速信息时进行测试 您需要下载链接文件并添加对其的引用。这是对soapclient.js的改编。我意识到它不适合你的需要,所以我修改它来适合你
<script type="text/javascript" src="/resources/javascript/soapclient.js"></script>
如果只提供当前登录用户的ID,则不需要密码。如果你输入管理员密码,你就可以访问所有内容 那么这是在内容编辑器的编辑表单中?如何注入Javascript?可能是自定义字段或IFRAME字段?简短版本:通过web.config中的
部分。长版本:
var url = document.location.href.replace(document.location.pathname, "/sitecore/shell/WebService/Service.asmx");
var id = "1CB4A1EF-F4C9-4596-9364-430885DDDD00"; //path of item.
var deep = false //Get All fields
var dbName = "web" //Which DB you'd like to get the fields from.
var credentials = new Object();
credentials.UserName = "Sitecore\\Admin";
credentials.Password = "b";
credentials.CustomData = "";
var pl = new SOAPClientParameters();
pl.add("id", id);
pl.add("deep", deep);
pl.add("databaseName", dbName);
pl.add("credentials", credentials);
SOAPClient.invoke(url, "GetXML", pl, true, GetItemFields_callBack);
function GetItemFields_callBack(response) {
console.log(response.sitecore.data.data.item.tid);
}