我们有许多自定义脚本,这些脚本是用VBScript for 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
%>
Run Code Online (Sandbox Code Playgroud)
我知道这可能是使用核心服务完成的,但是如果不了解这个代码或.Net,是否仍然可以使用VBScript来做到这一点?
是的,这适用于2011年,因为仍支持TOM COM + API.我最近成功地在2011系统上运行了一个非常相似的脚本.如果您要更新大量项目,可能需要将其移动到.net控制台应用程序,因为模板或网页可能会超时.如果这样做,那么请确保对所有TOM对象使用marshal.releaseobject.
| 归档时间: |
|
| 查看次数: |
377 次 |
| 最近记录: |