gpt4 book ai didi

tridion - 访问基于 .net 的 CT 组件的容器页面

转载 作者:行者123 更新时间:2023-12-02 11:22:22 26 4
gpt4 key购买 nike

我们正在开发基于 Broker 查询机制(过滤器)的基于 .net 的 CT:

ComponentPresentationAssembler  cpAssembler = new ComponentPresentationAssembler(Page ID,Page object);

为了传递页面 ID,我需要获取组件所在页面的访问权限。
如何从包访问页面?由于这是一个 CT,组件对象将在页面中可用,而不是页面对象。
尝试了以下代码,但没有成功:
string pageURI = _package.GetValue("Page.ID");
Page objPage = (Page)_engine.GetSession().GetObject(pageURI);

这不起作用,因为没有页面对象。有什么替代方法可以让我们从 CT 访问组件的父页面?

最佳答案

为了解决这个问题,我创建了一个 AddPageToComponentPresentation TBB。这是代码:

using System;
using System.Collections.Generic;
using System.Text;

using Tridion.ContentManager;
using Tridion.ContentManager.Templating;
using Tridion.ContentManager.Templating.Assembly;

namespace Tridion.Extensions.ContentManager.Templating {
[TcmTemplateTitle("Add Page To ComponentPresentation")]
class AddPageToComponentPresentation : TemplateBase {
public override void Transform(Engine engine, Package package) {
if (engine.PublishingContext.RenderContext.ContextItem != null) {
Item pageItem = package.CreateTridionItem(ContentType.Page, engine.PublishingContext.RenderContext.ContextItem.Id);
package.PushItem("Page", pageItem);
Logger.Debug("Page Item added to Package");
} else {
Logger.Debug("No Context Item found");
}
}
}
}

关于tridion - 访问基于 .net 的 CT 组件的容器页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12562360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com