2012-12-12 26 views
4

我们有许多用VBScript为SDL Tridion 5.2编写的自定义脚本。这些脚本使用TOM API在Tridion对象上执行许多批量操作。在SDL Tridion 2011中运行VBScript自定义页面

在最近升级到2011 SP1之后,我们现在需要更改大量组件模板中使用的组件模板,并且最好的方法是运行脚本来更新必要的页面和组件演示。

以前,我们可以运行一些类似于下面代码的VBScript来进行这种更改。在2011年,我们是否仍然可以运行这些脚本来进行这种更改?

这与在Content Manager服务器(Windows 2008 R2)上启用传统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来做到这一点?

+2

你为什么不试试呢?还是你尝试过,有问题吗? –

回答

5

是的,这项工作在2011年,因为仍然支持TOM COM + API。我最近在2011系统上成功地运行了一个非常类似的脚本。如果您要更新很多项目,则可能需要将其移至.net控制台应用程序,因为模板或网页可能会超时。如果你这样做,那么确保为所有的TOM对象使用marshal.releaseobject。

2

这将按Robert的说法工作。如果您不想启用传统ASP,则可以考虑将代码片段放置在页面或组件模板中,然后以特权用户身份登录时使用新模板预览项目。这将以相同的方式执行模板。尽管如果您期望执行时间很长,您可能会得到类似于Robert为ASP超时描述的模板超时。

只需确保在完成后删除或隐藏“代码”模板。

+3

或者你可以把它放在* .vbs文件中并用cscript运行。 – Quirijn

相关问题