标签: tridion

列表视图getListItemXmlAttributes方法因子发布项而失败

当修改项目时,我创建了一个JS类来填充SG/Folder列表视图数据.(根据Jaime的方法) 当我在他们创建的出版物中操作项目时,一切都很有效.

例如:我打开一个组件或页面,自定义locked by列会立即更新并显示我的用户名.

但是,当我转到子出版物并重复该过程时,我会看到窗口询问是否要本地化或编辑父项.如果我选择编辑父窗口,则代码不起作用.通过初始调试,我还没有完全理解它.Chrome似乎吞下了这个错误,Firefox给了我一个神秘的含义:

时间戳:2012年6月22日下午3:42:54

错误:未捕获的异常:[Exception ..."组件返回失败代码:0x80004002(NS_NOINTERFACE)[nsIWebProgress.DOMWindow]"nsresult:"0x80004002(NS_NOINTERFACE)"location:"JS frame :: chrome:// browser/content/tabbrowser .xml :: :: line 545"数据:否]

有没有人有任何初步想法?我稍后会尝试发布一些代码......

来自PageEx.js的代码:

Type.registerNamespace("MyCompany.Tridion.RTFExtensions");

/*
* Constructor
*/

MyCompany.Tridion.RTFExtensions.PageEx = function (id) {
    Type.enableInterface(this, "MyCompany.Tridion.RTFExtensions.PageEx");
    this.addInterface("Tridion.ContentManager.Page", [id]);
    var p = this.properties;
    p.versionNumberString = undefined;
    p.modifiedBy = undefined;
    p.lockedBy = undefined;
    p.approvalStatus = undefined;
    p.publishDate = undefined;
    p.previousVersion = undefined;
    p.previousApprovalStatus = undefined;
    p.customModifiedDate = undefined;
    p.initialModifierUserName = undefined;
};

/*
* sends the list xml string for the item 
*/ …
Run Code Online (Sandbox Code Playgroud)

javascript methods attributes listview tridion

358
推荐指数
1
解决办法
2万
查看次数

如何将.NET程序集注册为COM?

我已经为本地计算机上的工作流创建了一个类库并构建它.我将完整的解决方案移动到Tridion服务器并尝试使用regasm.exe工具在服务器中注册程序集,如下所示:

C:\User\XYZ\Desktop\>RegAsm \codebase F:\Workflow\WorkflowHandler/bin/debug/WorkflowHandler.dll
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

无法加载'F:\ Workflow\WorkflowHandler/bin/debug/WorkflowHandler.dll',因为它不是有效的.NET程序集.

我的服务器细节:

安装了64位,Windows Server 2008 R2 Enterprise和.NET Framework 4.

.net .net-assembly tridion

33
推荐指数
1
解决办法
6万
查看次数

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
查看次数

ASP.Net CMS推荐,Orchard,Sitefinity,Umbraco或N2?

在过去的3年里,我一直在使用(......可耻地)SharePoint 2007,DNN和Tridion开发Web门户.然而,我希望摆脱SharePoint和Tridion(缺乏对url,标记和tdd的控制),并且正在寻找替代方案.

你的投票中会有哪些以及为什么?你能分享一下这些经历吗?

  • 果园
  • Sitefinity
  • 一把umbraco
  • N2

虽然Orchard和Sitefinity似乎很容易扩展,但我担心社区支持.

谢谢

asp.net sharepoint content-management-system orchardcms tridion

20
推荐指数
1
解决办法
8133
查看次数

从自定义部署程序访问组件的字段

我正在尝试在Tridion 2011 SP1中创建一个自定义部署程序,它可以在发布后将组件索引到solr实例.一切都运行正常,但我对组件字段的索引方式遇到了一些问题.

我可以通过使用Component.getCustomMeta()方法和解析XML来访问元数据字段.但是,如果不读取正在输出的文件并解析输出,则访问正常字段似乎是不可能的.这并不是完全可行的,因为标记可能会发生变化,并且似乎在做一些应该(希望)是一件简单的事情方面还有很长的路要走.

我已经通过文档进行了拖网,似乎没有任何东西可以获得字段值,所以我在这里不知所措,需要解析输出或我在某处遗漏了什么?

tridion

17
推荐指数
1
解决办法
270
查看次数

页面上的多个动态SiteEdit CP

我们在SDL Tridion 2009 SP1中有SiteEdit 2009 SP2,它适用于正常发布的页面.如果我们在页面中有单个动态组件演示(DCP),它也可以正常工作.但是当我们在页面上有多个DCP时,它只占用第一个并忽略所有其他DCP.

这是我的代码

<xsl:variable name="SE_CP_MarkUP">
<![CDATA[ <!-- Start SiteEdit Component Presentation: {"ID" : "cp_%ID%", "ComponentID" : "%ID%", "ComponentTemplateID" : "tcm:XX-XXXXX-32", "Version" : 0, "IsQueryBased" : true  } -->]]>
Run Code Online (Sandbox Code Playgroud)

我在循环中使用这个变量

<xsl:value-of select="XXXX:RegexStringReplace($SE_CP_MarkUP,'%ID%',@ID)" disable-output-escaping="yes"/>
Run Code Online (Sandbox Code Playgroud)

请提出可能存在的问题?

更多详情:

生成的HTML

    <div>
  <!-- Start SiteEdit Component Presentation: {"ID" : "cp_tcm:13-287142", "ComponentID" : "tcm:13-287142", "ComponentTemplateID" : "tcm:13-286965-32", "Version" : 3, "IsQueryBased" : true  } -->
  HTMLConent
</div>
<div>
  <!-- Start SiteEdit Component Presentation: {"ID" : "cp_tcm:13-287162", "ComponentID" : "tcm:13-287162", "ComponentTemplateID" : "tcm:13-286965-32", "Version" …
Run Code Online (Sandbox Code Playgroud)

tridion siteedit

17
推荐指数
2
解决办法
344
查看次数

如何检测我的代码是否应该模拟?

我有代码作为事件处理程序的一部分运行,需要创建一个新的TOM.NET会话(我不能重用subject.Session).此事件处理程序加载到许多Tridion进程(TcmServiceHost,COM +,Publisher,TcmTemplateDebugHost,IIS应用程序池)中,这些进程可能:

  • 在可以访问Tridion的标识下运行(例如,COM +应用程序在MTSUser下运行,这是Tridion管理员)
  • 在无法访问Tridion的身份下运行,但允许模拟Tridion用户(例如,TcmServiceHost运行为NetworkService,其配置为Tridion模拟用户).

我尝试用这个TOM.NET代码来满足这两种情况:

Session session = null;
try
{
    session = new Session();
}
catch (AccessDeniedException ex)
{
    // this process doesn't have TCM access, so impersonate a user that does
    session = new Session("Administator");
}
if (session != null)
{
    var item = session.GetObject(id);
    ...
Run Code Online (Sandbox Code Playgroud)

这是检查我的代码是否在可以访问Tridion的进程下运行的正确方法(忽略我硬编码"Administrator"的事实)?代码有效,但我只是想知道是否有更有效的方法来执行"有权访问Tridion"检查?

注意:当我使用Core Service访问Tridion时会出现同样的问题,因此问题不在于TOM.NET是否是适用于此处的API.

tridion

16
推荐指数
1
解决办法
1049
查看次数

如何删除"SDL Tridion尚未使用此版本的浏览器进行测试"

我在Tridion CME中看到以下消息,并且不确定配置在何处将其删除.

有人可以帮忙吗?

在此输入图像描述

tridion

16
推荐指数
1
解决办法
534
查看次数

Tridion收藏夹 - 重命名收藏链接的功能

我正在使用Tridion 2011.我正在寻找一种让用户重命名喜欢的链接的方法.将组件,文件夹等添加到收藏夹是直截了当的,但有没有办法让用户重命名这些最喜欢的链接?

favorites rename tridion

16
推荐指数
1
解决办法
197
查看次数

富文本字段使用规则?

任何人都可以指出我在使用Tridion组件上的富文本字段时要遵循的一些规则?我注意到你可以直接在Source选项卡上输入mark up,但是如果你输入不完整的html,那么tridion会为你完成它,如下所示:

<!--Enter this-->
<td>test</td>


<!--And it becomes this-->
<table>
<tr>
<td>test</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

如果输入无效标记,则会出现"验证结果"弹出窗口,告知您语法无效:

<!--Generates Validation Results popup -->
<badtag>
Run Code Online (Sandbox Code Playgroud)

似乎在向RTF html添加id和class等属性没有问题,只要HTML有效,但其他人的经验是什么?任何人都可以指出我在组件RTF领域应该和不应该尝试和做的一些额外的最佳实践吗?

tridion

16
推荐指数
1
解决办法
827
查看次数