我们有许多用 VBScript 为 SDL Tridion 5.2 编写的自定义脚本。这些脚本使用 TOM API 对 Tridion 对象执行大量批量操作。
在最近升级到 2011 SP1 之后,我们现在需要更改大量组件演示中使用的组件模板,最好的方法是运行脚本来更新必要的页面和组件演示。
以前,我们可以运行一些类似于以下代码的 VBScript 来进行此更改。在 2011 年,我们还能运行这些脚本来进行这种改变吗?
是否像在 Content Manager 服务器 (Windows 2008 R2) 上启用 Classic ASP 一样简单?
<%
'##### CREATE TRIDION API OBJECTS #####
Set TDSE = Server.CreateObject("TDS.TDSE")
Call TDSE.Initialize()
'##### CALL FUNCTION - PASS IN STRUCTURE GROUP STARTING POINT #####
Call UpdateComponentTemplates(TDSE.GetObject("tcm:44-39929-4", OpenModeEditWithFallback, "tcm:0-44-1"))
Sub UpdateComponentTemplates(arg_strStructureGroup)
'##### GET ALL ITEMS WITHIN SPECIFIED STRUCTURE GROUP #####
For Each objItem In arg_strStructureGroup.GetItems
'##### IF ITEM IS A STRUCTURE GROUP #####
If TypeName(objItem) = "StructureGroup" Then
'##### CALL THE FUNCTION AGAIN, PASSING IN THE STRUCTURE GROUP #####
Call UpdateComponentTemplates(objItem)
End If
'##### IF ITEM IS A PAGE #####
If TypeName(objItem) = "Page" Then
For Each objComponent In objItem.ComponentPresentations
'##### CHECK EXISTING COMPONENT TEMPLATE & UPDATE WITH THE NEW ONE #####
If objComponent.ComponentTemplate.ID = "tcm:44-493-32" Then
'objComponent.ComponentTemplate = "tcm:44-216181-32"
'objItem.Save(True)
'##### OUTPUT STATUS MESSAGE #####
Response.Write(objItem.Title & " ......................... UPDATED<br />") & vbCrlf
Response.Flush()
End If
Next
End If
Next
End Sub
Response.Write("<p>Job Done!!!</p>") & vbCrlf
'##### CLEAN UP OBJECTS #####
Set TDSE = Nothing
%>
我知道这可能可以使用核心服务来完成,但是在不了解此代码或 .Net 的情况下,是否仍然可以使用 VBScript 来执行此操作?