将多值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
在复合模板中发布/渲染某段代码时,其中一个环境出现了突然问题.它是一个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) 真的很简单的问题,但我似乎无法让它正常工作.
我有一个组件,其中有一些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() < 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实现,但是一些内容(如新闻)是通过蓝图的基本Tridion原则共享的.网站都使用相同的语言,因此我们只处理品牌差异.
当前情况:有一个名为Global content的出版物,其中创建了此全局内容.在架构中有一些复选框,可以选择显示此内容的子出版物.当组件被保存时,事件系统启动并创建包含组件的页面,发布它等等...组件的删除不会发生,只有未选中所有复选框的重新保存最终将通过批处理删除页面.
经纪人情况:我想开始使用经纪人.更重要的是,因为在未来的情况下,网站也将开始向外部网站分享更多内容,我将通过RSS源或基本API来做这些内容,这些内容最适合来自Broker的内容.
场景:
我最初想到的是第一种情况,但我可以看到主要的缺点是混合本地(新闻)新闻和全球新闻项目会变得更加困难.
第二种情况似乎是第二好的机会.有人有这样的实现经验吗?
我正在尝试使用Alex Klock的解决方案来查询发布队列以查看项目中是否已经存在.关于它的帖子在这里:http://www.codedweapon.com/2012/03/tridion-publishengine/
我使用的外表套上2009 SP1,但似乎我没有PublishTransactionsFilter可在我的代码ABSE.在我的文件顶部,我确实包括:using Tridion.Contentmanager.Publishing;
关于如何在Tridion 2009中获得类似工作的任何例外情况?特别是PublishEngine.GetPublishTransactions方法.我在2009 API中找不到类似的方法.只有需要特定TCMUri或XML的方法.
这是(受限制的)Tridion论坛中关于无法删除结构组的问题的重复.但是,由于报告问题的人没有得到正确的答案或解决方案,我在这里重新询问.
我被一个结构组困住了,我也无法删除.它没有本地化,只有蓝色印刷到另一个出版物,并且没有任何页面.内容已经从一个演示环境中迁移出来,也许某个旧目标卡在了某个地方?
不能直接在数据库中删除它.还有其他方法吗?
我们创建了一个基于HTML5的新网站.使用<header>,<nav>,<section>等元素...
这是Tridion 2009 SP1中非常简单的实现.这意味着该网站的大部分内容都不是动态的,而是由Tridion Templating构建的.其中一个好处是内容管理员可以使用预览功能.
但是,由于内容管理器仅限于使用IE8,我们必须使用类似Modernizr.js的内容来正确格式化HTML.
这是有趣的结束......在网站本身工作正常,但在Tridion预览屏幕中没有.它几乎似乎没有拿起Javascript.
任何想法,除了创建不同的预览HTML和CSS?
我在Tridion中有一个可以有多个值的纯文本字段.itemtype是SingleLineTextField.
在TBB代码中,我有以下内容(删除了非必要部分):
ItemFields itemFields = new ItemFields(folder.Metadata, folder.MetadataSchema);
foreach (ItemField itemField in itemFields)
{
string itemFieldValue = string.Empty;
switch (Utilities.GetFieldType(itemField))
{
case FieldType.SingleLineTextField:
itemFieldValue = itemField.ToString();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,两个条目的结果只是两个字符串,其中包含一个字符行.
String A
String B
Run Code Online (Sandbox Code Playgroud)
使用的方法是通用的,也适用于其他字段,所以我一直在寻找一些方法来确定SingleLineTextField中是否有更多的值.