4

SDLTridion5.2用のVBScriptで記述されたカスタムスクリプトがいくつかあります。これらのスクリプトは、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を使用してこれを実行することは可能ですか?

4

2 に答える 2

5

はい、TOM COM + APIは引き続きサポートされているため、これは2011年に機能します。私は最近、2011年のシステムで非常によく似たスクリプトを正常に実行しました。多くのアイテムを更新する場合は、テンプレートまたはWebページがタイムアウトする可能性があるため、アイテムを.netコンソールアプリに移動することをお勧めします。これを行う場合は、すべてのTOMオブジェクトにmarshal.releaseobjectを使用してください。

于 2012-12-12T14:39:02.840 に答える
2

これは、ロバートが述べたように機能します。従来のASPを有効にしたくない場合は、コードフラグメントをページまたはコンポーネントテンプレートに配置し、特権ユーザーとしてログインしているときに新しいテンプレートでアイテムをプレビューすることを検討できます。これにより、同じ方法でテンプレートが実行されます。非常に長い実行時間が予想される場合でも、RobertがASPタイムアウトについて説明しているものと同様のテンプレートタイムアウトが発生する可能性があります。

完了したら、必ず「コード」テンプレートを削除または非表示にしてください。

于 2012-12-12T15:46:13.467 に答える