Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中获取Sitecore 6模板名称或ID?_Javascript_Templates_Sitecore_Sitecore6 - Fatal编程技术网

如何在Javascript中获取Sitecore 6模板名称或ID?

如何在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)。在本段中,有一个

我正在为Sitecore制作一个第三方Javascript工具,需要根据当前编辑页面的模板修改其行为

到目前为止,我一直在使用此脚本获取模板的名称:

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);
    }