我在SDL Tridion 2009和2011中都注意到,在Publication Dialog的工作流选项卡上有一个关联页面模板过程和关联组件模板过程的字段.
这是否意味着模板/代码更改可以在生产中进行并通过工作流程发布?这是一个好习惯吗?如果是这种情况,为什么他们没有模板构建块的工作流程过程关联?
我有一个外部JavaScript和一个CSS文件.我不知道如何将此文件添加到我的页面.我正在为CT和PT使用DWT TBB.
我正在我的页面TBB中编写内部CSS以暂时获取输出.但我没有得到如何实现JavaScript.有人能帮助我吗?
我应该将这些文件作为组件并在我的页面上呈现它们吗?这是正确的方法吗?如果是,请告诉我要遵循的步骤.
任何人都可以指导我如何在DD4T代码中使用Razor模板中的SiteEdit特定语法或标签?我已经在其中看到了Site Edit相关的类,但是无法理解如何在视图中使用SiteEdit标签,其中有一些类似于Dreamweaver的语法RenderComponentField
或tcdl:ComponentField
我们在Dreamweaver中使用的语法.我是DD4T的新手,我正在使用SiteEdit 2009 SP3和SDL Tridon 2011 SP1.
提前致谢.
更新:我们已经尝试了答案中提到的实现,但遗憾的是,当我们访问代理页面时出现"无效模板"时,我们收到错误 - HTML无效,可能是因为您的模板代码产生了无效的HTML,例如内部的ap标签使用W3C标记验证服务等验证程序检查HTML,更正模板并重新发布." 我想这是因为我们在组件和页面模板中使用了动态页面和组件TBB,因此Xml内容被推送到html页面.
让我们知道如何继续下去.
我想使用核心服务删除组件的先前版本,只保留最新版本.我怎样才能做到这一点?
我为SDL Tridion创建了一个新的编辑器,它为功能区栏添加了一些新功能.通过将以下代码段添加到editor.config来启用此功能
<!-- ItemCommenting PowerTool -->
<ext:extension assignid="ItemCommenting" name="Save and<br/>Comment" pageid="HomePage" groupid="ManageGroup" insertbefore="SaveCloseBtn">
<ext:command>PT_ItemCommenting</ext:command>
<ext:title>Save and Comment</ext:title>
<ext:issmallbutton>false</ext:issmallbutton>
<ext:dependencies>
<cfg:dependency>PowerTools.Commands</cfg:dependency>
</ext:dependencies>
<ext:apply>
<ext:view name="*" />
</ext:apply>
</ext:extension>
Run Code Online (Sandbox Code Playgroud)
这通过在节点中使用通配符值应用于所有视图.这导致我的新按钮被添加到每个视图的功能区中,包括主仪表板.有没有办法将此添加到除仪表板之外的所有视图?或者我必须创建这样的东西?
<ext:apply>
<ext:view name="PageView" />
<ext:view name="ComponentView" />
<ext:view name="SchemaView" />
</ext:apply>
Run Code Online (Sandbox Code Playgroud)
如果这是实现我需要的结果的唯一方法,是否有一个所有视图名称的列表?
我试图冒充Tridion 2011 SP1 HR1中的核心服务,我收到此错误:
无法处理该消息,因为操作"http://www.sdltridion.com/ContentManager/CoreService/2011/ISessionAwareCoreService/Impersonate"无效或无法识别.
为什么会这样?我必须盲目不明白为什么它不起作用......
关于服务器:Tridion 2011 SP1 HR1的新安装
我的代码看起来像这样:
client = Client.GetCoreService();
if (string.IsNullOrEmpty(username)) username = HttpContext.Current.User.Identity.Name;
client.Impersonate(username);
Run Code Online (Sandbox Code Playgroud)
这是GetCoreService方法:
public static SessionAwareCoreServiceClient GetCoreService()
{
AppSettingsReader reader = new AppSettingsReader();
string coreServiceUrl = (string)reader.GetValue("CoreServiceEndPoint", typeof(string));
int dataSize = (int)reader.GetValue("DataSize", typeof(int));
var quotas = new System.Xml.XmlDictionaryReaderQuotas
{
MaxStringContentLength = dataSize,
MaxArrayLength = dataSize,
MaxBytesPerRead = dataSize
};
var httpBinding = new WSHttpBinding
{
MaxReceivedMessageSize = 10485760,
ReaderQuotas = quotas,
Security = { Mode = SecurityMode.Message, Transport = { ClientCredentialType = …
Run Code Online (Sandbox Code Playgroud) 我们在发布组件时更新组件字段,例如.当组件发布时,我们希望将当前日期时间更新为组件的PublishDate字段.我们已经在.net程序集(c#)中编写了这段代码.发布组件失败时出现错误"您无权执行此操作"
我们曾经在vbscript模板中执行此操作,但我们正在迁移到复合模板,我们正面临这个问题.
我正在写一个GUI扩展和使用Anquilla框架来获取列表Keywords
内Category
.我正在获取关键字列表的XML文档,然后在我的扩展中使用该文档.
我的问题是返回的XML不包含关键字的' Description
'值.我有标题和密钥等.
我的原始代码如下所示:
var category = $models.getItem("CATEGORYTCMID:);
var list = category.getListKeywords();
list.getXml();
Run Code Online (Sandbox Code Playgroud)
返回的典型节点是:
<tcm:Item ID="tcm:4-1749-1024"
Type="1024" Title="rate_one" Lock="0" IsRoot="true"
Modified="2012-12-17T23:01:59" FromPub="010 Schema"
Key="rate_one_value" IsAbstract="false"
CategoryTitle="TagSelector"
CategoryID="tcm:4-469-512" Icon="T1024L0P0"
Allow="268560384" Deny="96" IsNew="false"
Managed="1024"/></tcm:ListKeywords>
Run Code Online (Sandbox Code Playgroud)
所以我尝试使用过滤器为我提供额外的列信息:
var filter = new Tridion.ContentManager.ListFilter();
filter.columns = Tridion.Constants.ColumnFilter.EXTENDED;
var list = category.getListKeywords(filter);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这只提供了额外的XML属性:
IsShared="true" IsLocalized="false"
Run Code Online (Sandbox Code Playgroud)
我非常希望描述值成为XML的一部分,而无需从XML创建Keyword对象.这样的事情可能吗?
咳嗽任何想法?咳嗽
我们有一个应用程序,它通过发布动态组件表示动态生成菜单.menu.xml由基于Structure组的组件模板写出,这个组件模板通过事件系统触发,每当结构组发布时发表.
这个设置工作正常,直到Tridion 2011从Tridion 2009升级.但是自升级以来,菜单不会动态发布,并且每次结构组发生更改时都需要重新发布菜单组件模板.我们检查了事件系统,一切都很好.此外,这种菜单组件模板的重新发布会触发一些其他页面菜单中的问题.
在进行一些调试时(我们使组件模板写出了它正在处理的pageURI),我们发现正在写出的页面URI是错误的.
以下是采取的步骤和得出的结论:
所有错误的页面都已经过检查; DCP标记在JSP代码中设置了正确的属性
其他TRACE语句已添加到Tridion标记库中,这证实了以下内容:
使用提供的变量正确转换了XSLT
通过将XSLT属性写出到HTML,我们看到XSLT处理器正在提供错误的参数.
因此,我可以安全地得出结论,该问题已被隔离到以下事件中; 正在使用不正确的页面ID调用XSL处理器.最可能的原因是由于动态组件表示(DCP)java代码中的并发问题,DCP被群集并且开始混淆哪个页面正在使用当前对象.
如果是这种情况,可以采取哪些措施来纠正它.
任何信息都会有帮助.提前致谢!
问候,
Keirthana TS
2013年1月22日更新:
在更多调试中,我们发现此问题在Presentation端(我们的演示服务器)上重复出现,并且事件系统与页面上出现的错误菜单无关.
也就是说,当我们查看从Tridion发布的jsp页面时,我们有顶层菜单,左侧菜单和面包屑的正确页面URI:
<tridion:ComponentPresentation pageURI="tcm:57-186286-64" componentURI="tcm:57-103196" templateURI="tcm:57-23654-32"/><!-- privat-->
<div id="nav"><div class="wrapper">
<tridion:ComponentPresentation pageURI="tcm:57-186286-64" componentURI="tcm:57-23638" templateURI="tcm:57-23656-32" />
</div></div>
<div id="page" class="clear ">
<div id="content" class="clear">
<tridion:ComponentPresentation pageURI="tcm:57-186286-64" componentURI="tcm:57-23639" templateURI="tcm:57-23656-32" />
<div id="middle" class="rightcolumn">
<tridion:ComponentPresentation pageURI="tcm:57-186286-64" componentURI="tcm:57-23636" templateURI="tcm:57-23656-32" />
Run Code Online (Sandbox Code Playgroud)
但是,当我们查看网页的来源时,我们发现页面URI(我们将页面URI写入html页面)搞砸了如下:
<div id="middle" class="rightcolumn">
Run Code Online (Sandbox Code Playgroud)
生成面包屑我们得到一个不同的pageURI而不是正确的.
如何获得Tridion核心服务的发布目标列表?我看到此代码示例以获取目标信息,但无法找到从核心服务获取列表的方法.也许它是Publication对象的一部分?
var pubtarget = (PublicationTargetData)client.Read("tcm:0-21-65537", readoption);
Run Code Online (Sandbox Code Playgroud)
此外,如果有办法通过安圭拉JavaScript客户端获得此功能,那也很酷.