标签: tridion2009

Tridion Component Link无法在动态组件演示中解析

我目前正在Tridion 2009 SP1中实现功能,用户可以利用过滤器来查询代理以匹配条件,然后将组件演示文稿返回到页面.返回的每个项目都包含组件链接.

最初动态CP作为HTML片段存储在代理DB中,但是发现当以这种方式存储CP时,Tridion将从内容中剥离组件链接并在HTML中留下空白.

然后我切换了设置,以便动态CP现在作为ascx控件存储在文件存储中.使用此设置时,<tridion:ComponentLink ... />会成功存储在ascx文件中.

但是,当我将结果呈现到屏幕上时,组件链接没有被解析,而我将留<tridion:ComponentLink ... />在我生成的源中.

目前,我正在使用该GetComponentPresentation方法返回CP内容,然后在绑定到Repeater进行显示之前将其添加到List中.

汇总代码如下:

ComponentPresentationFactory CPFactory = new ComponentPresentationFactory();
List<string> componentPresentations = new List<string>();

for (int i = 0; i < tbl.Rows.Count; i++)
{
    ComponentPresentation cp = CPFactory.GetComponentPresentation(
                                             tbl.Rows[i][0].ToString(), 
                                             strComponentTemplate.ToString());

    if (cp != null)
    {
        componentPresentations.Add(cp.Content);
    }
}
Run Code Online (Sandbox Code Playgroud)

此列表以通常的方式绑定到转发器:

rptOffer.DataSource = componentPresentations;
rptOffer.DataBind();
Run Code Online (Sandbox Code Playgroud)

有谁知道我如何强制解决组件链接以及为什么GetComponentPresentation函数不为我这样做?

有什么东西我应该做的不同或者这是不可能的我正在实施这个?

我已确认tridiontagprefix已在web.config中正确注册.

我对Tridion很新,所以非常感谢任何帮助!

UPDATE

我试图实现Will的建议,因为它似乎是我的场景最合适的解决方案,但当我尝试使用Will的建议时,我收到了一个(相当乏味的)错误:

ComponentPresentationAssembler cpa = new ComponentPresentationAssembler("tcm:35-62652-64");
string content = cpa.GetContent(tbl.Rows[i][0].ToString(), strComponentTemplate.ToString());
Run Code Online (Sandbox Code Playgroud)

实际上有2个错误(看似)随机发生但始终在cpa.GetContent(...)通话中.错误是: …

tridion tridion2009 tridion-content-delivery

21
推荐指数
4
解决办法
2459
查看次数

Tridion Taxonomy查询示例的任何良好来源

我有一个场景,我发布了几千个使用特定类别/关键字分类的组件演示文稿,但组件也有自定义元数据字段,用于定义前n个.将显示.基本上,我需要根据关键字过滤一组组件,根据自定义元数据对它们进行排序,然后只选择前N个.

我理解如何列出项目并创建基本过滤器(从API中的过滤器项列表),但我需要过滤元数据字段(例如,具有最新元数据"priorityDate" 的三个项目).

从我正在阅读的内容中,我希望从分类搜索中获取所有记录(使用TaxonomyKeywordCriteria),然后手动(对QueryRunner执行SQL)检索所有组件的元数据以进行过滤/排序.

我一定肯定错过了一些东西(它感觉不对,有1/2 API调用然后在页面SQL脚本中)...如果没有,QueryRunner查询将被缓存在Taxonomy Query.executeQuery()的结果旁边

示例代码:

ItemTypeCriteria isComponent = new ItemTypeCriteria(16);
TaxonomyKeywordCriteria taxonomyKeywordCriteria = new TaxonomyKeywordCriteria(taxURI, taxKeywordURI, true);
Criteria[] allCriteria = {isComponent, isTDIPublication, isArticle, taxonomyKeywordCriteria}; 
AndCriteria andCriteria = CriteriaFactory.And(allCriteria);
Query query = new Query();         
query.setCriteria(andCriteria);
Run Code Online (Sandbox Code Playgroud)

filtering taxonomy tridion tridion2009

12
推荐指数
1
解决办法
1465
查看次数

以逗号分隔Tridion多值字段的最快方法

将多值Tridion文本字段拆分为逗号分隔字符串的最快方法是什么?在我的情况下,我使用C#,但我想其他任何例子也是受欢迎的.这似乎是丑陋而冗长的方式:

var multiTextField = fields["multiTextField"] as TextField;
string multiCommaField = String.Empty;

for (int i = 0; i < multiTextField.Values.Count; i++)
{
    multiCommaField += multiTextField.Values[i].ToString() + ",";
}
Run Code Online (Sandbox Code Playgroud)

编辑:我使用的是.NET 3.5和Tridion 2009 SP1

.net-3.5 tridion tridion2009

12
推荐指数
2
解决办法
286
查看次数

有没有办法在调用RenderComponentPresentation时传递变量?

可能重复:
SDL Tridion中Dreamweaver模板中的变量设置

我们使用RenderComponentPresentation(在Tridion 2009上)来呈现内部和外部链接,以便代码库只在一个Dreamweaver模板中.如果我们可以通过一个可选的CSS类来渲染链接,那将会很有帮助.

有什么想法可以做到这一点?

tridion tridion2009

11
推荐指数
1
解决办法
1178
查看次数

在复合模板中使用C#进行渲染时出现问题

在复合模板中发布/渲染某段代码时,其中一个环境出现了突然问题.它是一个DTAP环境,问题只发生在生产环境中(一如既往;-),其中有两台CMS机器和两台发布者.所有都表现出相同的行为.

导致问题的代码是:

StructureGroup SG = (StructureGroup)engine.GetObject("/webdav/pub/root/etc/etc...");
Run Code Online (Sandbox Code Playgroud)

"模板"构建器中的错误是:

System.Net.WebException: The underlying connection was closed: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 10.77.66.136:80 
   bij System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 
   bij System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP) 
   bij System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) 
   --- Einde …
Run Code Online (Sandbox Code Playgroud)

tridion tridion2009

11
推荐指数
1
解决办法
257
查看次数

组件中的XSLT得到(未)编码

真的很简单的问题,但我似乎无法让它正常工作.

我有一个组件,其中有一些XSLT(用于导航).它通过XSLT TBB使用XSLT Mediator发布.

在发布< 变为<,并打破xslt ...

组件内容(纯文本字段)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:tcm="http://www.tridion.com/ContentManager/5.0" exclude-result-prefixes="tcm xsl xs xlink tridion">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="yes" />
    <xsl:template match="/">
        <xsl:apply-templates select="/node/node[@type='folder')='0' and position() &lt; 3]">
           <xsl:sort select="sortnum"/>
        </xsl:apply-templates>

        <xsl:template match="node">
            <xsl:text>Lorem Ipsum</xsl:text>
        </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

XLT CT TBB输出此组件:

<xsl:stylesheet version="1.0" xmlns:tcm="http://www.tridion.com/ContentManager/5.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:tridion="http://www.tridion.com/ContentDelivery/5.3/TCDL" xmlns:xlink="http://www.w3.org/1999/xlink"  xmlns:helper="http://www.tridion.com/xslthelper" xmlns:systeemcode="http://www.indivirtual.nl/SysteemCode" xmlns:xhtml="http://www.w3.org/1999/xhtml" exclude-result-prefixes="tcm xsl tridion xlink systeemcode xslthelper helper xhtml">
    <xsl:output method="text" omit-xml-declaration="yes" indent="yes" encoding="utf-8" standalone="no"/>
    <xsl:variable name="content" select="/tcm:Component/tcm:Data/tcm:Content/systeemcode:SysteemCode"/>
    <xsl:template match="/">
        <xsl:value-of disable-output-escaping="yes" select="helper:HtmlDecode($content/systeemcode:code)"/>
    </xsl:template>
</xsl:stylesheet>   
Run Code Online (Sandbox Code Playgroud)

输出CP的XSLT页面TBB: …

tridion tridion2009

11
推荐指数
1
解决办法
241
查看次数

TDSE.GetObject无法解析其中包含点的WebDAV URL

使用以下功能的任何人都遇到异

tdse.GetObject(tmpFolderWebDavURL, EnumOpenMode.OpenModeView, null,
                                          XMLReadFilter.XMLReadAll) as Folder;
Run Code Online (Sandbox Code Playgroud)

似乎webdav的最后一段包含一个点,然后方法抛出和异常.

例如

tmpFolderWebDavURL = "/webdav/test_publication/2.2 folder name"- 抛出异常失败

tmpFolderWebDavURL = "/webdav/test_publication/22 folder name"- 工作

tmpFolderWebDavURL = "/webdav/test_publication/2.2 folder name/sub_folder"- 工作

例外

<?xml version="1.0"?>
<tcm:Error xmlns:tcm="http://www.tridion.com/ContentManager/5.0" ErrorCode="80040200" Category="4" Source="Kernel" Severity="2">
    <tcm:Line ErrorCode="80040200" Cause="false" MessageID="15301">
        <![CDATA[Unable to get TOM object for URI: /webdav/TPMG Medical Library Content/Building Blocks/Content Live/2.2 People Lists]]>
        <tcm:Token>/webdav/TPMG Medical Library Content/Building Blocks/Content Live/2.2 People Lists</tcm:Token>
    </tcm:Line>
    <tcm:Line ErrorCode="80040200" Cause="true" MessageID="15748">
        <![CDATA[Unable to map all paths to URIs.]]>
    </tcm:Line> …
Run Code Online (Sandbox Code Playgroud)

tridion tridion2009

10
推荐指数
1
解决办法
928
查看次数

使用SDL Tridion 2009 Content Delivery启用确认分类标准缓存

有没有人对确认分类法缓存功能的简单但有效的方法有任何建议.我正在开发一个系统,其中cd_broker_config(Tridion 2009)将分类法缓存注释掉了.

我们现在已经取消注释并重新启动了部署服务,但有没有办法可以100%确认缓存现在正在进行?使用ORACLE 11.2.0.1

caching taxonomy tridion tridion2009

10
推荐指数
1
解决办法
146
查看次数

Tridion:发布时无法加载.Net dll

我正在使用.Net dll Newtonsoft.Json in my C# TBB来处理组件并生成Json数据.我已经添加了这个dll GAC[Global Assembly Cache],它也可以运行.但有时它不起作用,我发布时出现以下错误:

JScriptException: Expression 'RenderComponentPresentation()' had error 'Could not load file or assembly 'Newtonsoft.Json, Version=4.0.5.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.'

但是当我在Tridion中预览页面时它运行正常.要解决此问题,我们重新启动Tridion Services,重新启动后,我们发布了一个很好的页面.但是这个问题一再出现.有没有办法永久解决这个问题?

最近,当我已经在发布过程中再次发布同一页面时,我可以重现问题.第二次发布尝试返回上述错误,但第二次发布尝试失败后第一次发布尝试完成并返回Success.任何想法为什么这种奇怪的行为.

.net json.net assembly-loading tridion tridion2009

9
推荐指数
2
解决办法
991
查看次数

将包中的项目作为Dreamweaver模板执行

有人知道复合模板中是否可以使用包中的字符串项并像执行Dreamweaver模板一样执行它?你是否将相同的方法应用于其他调解员(如剃刀)?

谢谢马克

tridion tridion2009 tridion-2011

9
推荐指数
2
解决办法
176
查看次数