【问题标题】:Why is a SDL Tridion 2011 Custom Resolver called twice when publishing a Component?为什么在发布组件时会调用两次 SDL Tridion 2011 自定义解析器?
【发布时间】:2012-03-27 15:32:31
【问题描述】:

我有一个自定义解析器,它应用于 PublicationStructureGroupPageComponent类型的项目>。代码按预期运行,但我不清楚何时调用代码。 我的 Tridion.ContentManager.config 文件包含以下摘录:

<resolving>
    <mappings>
        <clear/>
        <add itemType="Tridion.ContentManager.CommunicationManagement.Page">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.PageResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
                <add type="UrbanCherry.Net.SDLTridion.CustomResolvers.DynamicBinaryLinkResolver" assembly="UrbanCherry.Net.SDLTridion.CustomResolvers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e7729a00ff9574fb"/>
            </resolvers>
        </add>
        <add itemType="Tridion.ContentManager.CommunicationManagement.PageTemplate">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.PageTemplateResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
            </resolvers>
        </add>
        <add itemType="Tridion.ContentManager.ContentManagement.Component">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.ComponentResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
                <add type="UrbanCherry.Net.SDLTridion.CustomResolvers.DynamicBinaryLinkResolver" assembly="UrbanCherry.Net.SDLTridion.CustomResolvers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e7729a00ff9574fb"/>
            </resolvers>
        </add>
        <add itemType="Tridion.ContentManager.CommunicationManagement.ComponentTemplate">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.ComponentTemplateResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
            </resolvers>
        </add>
        <add itemType="Tridion.ContentManager.CommunicationManagement.Publication">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.PublicationResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
                <add type="UrbanCherry.Net.SDLTridion.CustomResolvers.DynamicBinaryLinkResolver" assembly="UrbanCherry.Net.SDLTridion.CustomResolvers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e7729a00ff9574fb"/>
            </resolvers>
        </add>
        <add itemType="Tridion.ContentManager.CommunicationManagement.StructureGroup">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.StructureGroupResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
                <add type="UrbanCherry.Net.SDLTridion.CustomResolvers.DynamicBinaryLinkResolver" assembly="UrbanCherry.Net.SDLTridion.CustomResolvers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e7729a00ff9574fb"/>
            </resolvers>
        </add>
        <add itemType="Tridion.ContentManager.ContentManagement.Category">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.CategoryResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
            </resolvers>
        </add> 
    </mappings>
</resolving>

当我发布 PublicationStructureGroupPage 时,我的自定义解析器会被调用一次(这是我的预期),但是当我发布了一个 Component(其中的 Schema 链接到一个 Component Template,该模板生成 Dynamic Component Presentation)自定义解析器被调用两次。

这是预期的行为吗?如果没有,任何人都可以建议为什么我的解析器被第二次调用?

【问题讨论】:

  • 有趣的是,组件不会也出现在页面上吧?
  • 不,不在页面上。我尝试从所有项目类型中删除解析器,除了 Component 沿着相同的思路思考,但它仍然发生。我想知道它是否为组件调用一次,为与组件模式关联的每个 CT 调用一次。我现在要做一个新的 CT,看看它是否会被调用 3 次。
  • 是的,这也是我想到的,让我知道你的测试结果

标签: tridion tridion-2011


【解决方案1】:

解析器为组件调用一次,并且为与组件架构关联的每个组件模板调用一次。为该架构添加额外的 CT 将调用次数增加到三个。

尚不清楚这是错误还是设计使然,但解释了调用次数。有趣的是,自定义解析器仅在取消发布组件时调用一次

【讨论】:

  • 当您回答自己的问题时很好 :) 我会说它为组件本身调用一次(因此可能解析到包含该组件的页面),一次用于 CT。但是我之前没有检查过这些信息,如果它是设计的,我也没有...
【解决方案2】:

我观察到,对于当前发布操作的“范围”内的每个发布目标,都会调用一个自定义解析器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2012-11-30
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    相关资源
    最近更新 更多