当修改项目时,我创建了一个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) 我已经为本地计算机上的工作流创建了一个类库并构建它.我将完整的解决方案移动到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.
我目前正在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
函数不为我这样做?
有什么东西我应该做的不同或者这是不可能的我正在实施这个?
我已确认tridion
tagprefix已在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(...)
通话中.错误是: …
在过去的3年里,我一直在使用(......可耻地)SharePoint 2007,DNN和Tridion开发Web门户.然而,我希望摆脱SharePoint和Tridion(缺乏对url,标记和tdd的控制),并且正在寻找替代方案.
你的投票中会有哪些以及为什么?你能分享一下这些经历吗?
虽然Orchard和Sitefinity似乎很容易扩展,但我担心社区支持.
谢谢
asp.net sharepoint content-management-system orchardcms tridion
我正在尝试在Tridion 2011 SP1中创建一个自定义部署程序,它可以在发布后将组件索引到solr实例.一切都运行正常,但我对组件字段的索引方式遇到了一些问题.
我可以通过使用Component.getCustomMeta()方法和解析XML来访问元数据字段.但是,如果不读取正在输出的文件并解析输出,则访问正常字段似乎是不可能的.这并不是完全可行的,因为标记可能会发生变化,并且似乎在做一些应该(希望)是一件简单的事情方面还有很长的路要走.
我已经通过文档进行了拖网,似乎没有任何东西可以获得字段值,所以我在这里不知所措,需要解析输出或我在某处遗漏了什么?
我们在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) 我有代码作为事件处理程序的一部分运行,需要创建一个新的TOM.NET会话(我不能重用subject.Session
).此事件处理程序加载到许多Tridion进程(TcmServiceHost,COM +,Publisher,TcmTemplateDebugHost,IIS应用程序池)中,这些进程可能:
我尝试用这个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 CME中看到以下消息,并且不确定配置在何处将其删除.
有人可以帮忙吗?
我正在使用Tridion 2011.我正在寻找一种让用户重命名喜欢的链接的方法.将组件,文件夹等添加到收藏夹是直截了当的,但有没有办法让用户重命名这些最喜欢的链接?
任何人都可以指出我在使用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 ×10
.net ×1
asp.net ×1
attributes ×1
favorites ×1
javascript ×1
listview ×1
methods ×1
orchardcms ×1
rename ×1
sharepoint ×1
siteedit ×1
tridion2009 ×1