2012-12-12 3 views
4

VBScript for SDL Tridion 5.2로 작성된 많은 사용자 지정 스크립트가 있습니다. 이 스크립트는 TOM API를 사용하여 Tridion 객체에 대한 여러 가지 대량 작업을 수행합니다.SDL Tridion 2011에서 VBScript 사용자 지정 페이지 실행

2011 SP1로 최근 업그레이드 한 이후 많은 구성 요소 프리젠 테이션에 사용 된 구성 요소 템플릿을 변경해야한다는 요구 사항이있었습니다.이를 수행하는 가장 좋은 방법은 스크립트를 실행하여 필요한 페이지를 업데이트하는 것입니다. 컴포넌트 프레젠테이션.

이전에는 다음 코드와 비슷한 VBScript를 실행하여 이러한 변경 작업을 수행 할 수있었습니다. 2011 년에도 이러한 스크립트를 실행하여 이러한 종류의 변경 작업을 수행 할 수 있습니까?

Content Manager 서버 (Windows 2008 R2)에서 Classic ASP를 사용하는 것이 간단합니까? 나는이 아마도 핵심 서비스를 사용하여 수행 할 수 있습니다 알고 있지만,이 코드 또는 닷넷에 대한 지식없이,이 작업을 수행 할 VBScript를를 사용하는 것이 여전히 가능

<% 
'##### 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 
%> 

?

+2

왜 그냥 사용해 보지 않으시겠습니까? 또는 그것을 시도하고 거기에 문제가 있습니까? –

답변

5

예, TOM COM + API가 여전히 지원되므로 2011에서 작동합니다. 최근에 2011 시스템에서 매우 유사한 스크립트를 성공적으로 실행했습니다. 많은 항목을 업데이트하는 경우 템플릿이나 웹 페이지가 시간 초과 될 수 있으므로 .net 콘솔 앱으로 옮길 수 있습니다. 이렇게하면 모든 TOM 개체에 marshal.releaseobject를 사용해야합니다.

2

Robert가 말한대로 작동합니다. 기존 ASP를 사용하지 않으려는 경우 페이지 또는 구성 요소 템플릿에 코드 단편을 넣은 다음 권한있는 사용자로 로그인 한 상태에서 새 템플릿으로 항목을 미리 볼 수 있습니다. 이렇게하면 같은 방법으로 템플릿이 실행됩니다. 매우 긴 실행 시간을 예상하더라도 Robert가 ASP 시간 초과에 대해 설명하는 것과 유사한 템플리트 시간 초과를 얻게됩니다.

완료 한 후 "코드"템플릿을 삭제하거나 숨기십시오.

+3

또는 * .vbs 파일에 넣고 cscript로 실행할 수 있습니다. – Quirijn

관련 문제