小编Dyl*_*ers的帖子

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

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

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

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

caching taxonomy tridion tridion2009

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

Tridion和PDF(大容量)内容管理

我们有5,000个PDF,总共不应超过200GB.他们可能需要全年更新,批量约为1,000.

如我所见,有两条主要路线......

1)通过Tridion发布PDF和相关元数据2)直接导入交付环境并管理Tridion中的PDF元数据

将这些PDF放入CMS的一个令人信服的(商业)原因是让它们投入生产的途径 - CMS =简单 - 非CMS =根本不容易以及它直接为业务提供的控制.

我们当然更愿意管理与二进制项直接相关的元数据,并且还利用组件链接(跟踪使用的位置等)而不是使用"链接"将组件(用于元数据)映射到非CMS控制的二进制项 - 所以在我看来,通过 CMS会更有意义.

现在 - 存在膨胀数据库/阻止发布队列的问题......

其中一些项目可能需要通过工作流程(如果我们通过WebDAV批量上传,我认为我们可以为特定文件夹定义特定的盒式磁带,从而关联不同的模式?).但是 - 使用WebDAV 可能意味着PDF(和历史版本)将存储在数据库中,这可能会有问题.

所以...我们可以将Tridion中的这些链接作为外部链接组件,我认为这意味着我们不能使用WebDAV(或者我们仍然可以使用带有external_linked PDF的WebDAV - 看起来它没有意义吗?)

我确信在CMS中(或周围)管理大量二进制文件是我们很多人遇到过的,并且非常有兴趣了解其他人是如何处理这种困境的?

谢谢

pdf binaries batch-processing tridion

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

Tridion RTF文本选择

我正在编写一个GUI扩展,它基本上将选定的文本包装在特定的DIV中.我的文本被封装了DIV,但是有点块...

当用户没有选择特定的文本时,我假设其意图是包装最近的HTML元素

htmlSelectedNode = target.editor.getSelectedHTMLElement()
Run Code Online (Sandbox Code Playgroud)

这一切似乎工作正常,我将HTML元素传递给我的扩展.经过一些操作后,我然后应用HTML,但它是在前一个元素中注入新的HTML - 而不是替换它...

是否有可能"选择"HTML元素 - 我可以看到a .focus()和a .setCapture()但这些似乎没有做到这一点 - 我想理想的是使用与从"当前元素"中选择元素时应用的功能相同的功能"功能区栏上的下拉菜单,但我没有成功找到与此下拉列表相关联的onclick/select方法.

只是为了澄清......举个例子......

如果文本是

    <div class="notrelevant"><p>test1</p><p>this is an example</p></div>
Run Code Online (Sandbox Code Playgroud)

并且用户将光标插入'和'中的i和s之间我希望GUI预先选择最近的HTML元素 - 在这种情况下,最终结果将是......

    <div class="notrelevant"><p>test1</p><div class="INJECTED_CORRECTLY"><p>this is an example</p></div></div>
Run Code Online (Sandbox Code Playgroud)

编辑: 对于完整性我已经包含提交事件,我用它来(重新)注入HTML成RTF(虽然我不认为这将是有意义的操作在这一点上的选择,并已"选择"宁愿上面的文字使用更"标准"的现有Tridion功能......)

   $evt.addEventHandler(popup, "submit",
        function DateHighlighter$execute$onPopupSubmitted(event) {

            var el = event.data.html;
            if (el) {
                if (htmlSelectedNode != null) {
                    var lDocument = htmlSelectedNode.ownerDocument;
                    var lTempContainer = lDocument.createElement("span");

                    try {
                        lTempContainer.innerHTML = el || "";
                    }
                    catch (err) {
                        //assigning a value to innerHTML can be …
Run Code Online (Sandbox Code Playgroud)

tridion tridion-2011

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

已应用了哪些Tridion修补程序?

确定Tridion修补程序应用于系统的最可靠方法是什么(除了正确的先前版本文档)?

具体来说,我想了解SDL Tridion 2009,但也有兴趣了解它是否与SDL Tridion 2011不同.

hotfix tridion

7
推荐指数
1
解决办法
238
查看次数

Tridion日期选择器 - 访问事件

我有一个Tridion Date控件添加到我创建的GUI扩展.aspx页面.

我已将此添加到ASPX页面中

<c:Date id="AdjustDate" runat="server" 
IsSeparateFields="false" AddClearButton="false" TabIndex="3"></c:Date>
Run Code Online (Sandbox Code Playgroud)

在我的.JS中我添加了以下内容

  1. 给我一个Tridion日期控件的句柄(选择日期值等)

    c.AdjustDate = $ controls.getControl($("#AdjustDate"),"Tridion.Controls.Date")

  2. 捕获日期中的更改(在用户在模态对话框中选择"确定"后)

    $ evt.addEventHandler(c.AdjustDate,"change",this.getDelegate(this._onHighlightDateChange));

我捕获事件并根据所选日期执行一些更新.

但是,我的GUI扩展对话框的高度小于显示模式对话框时的高度.我想在用户单击Select Date并显示模式对话框时调整ASPX对话框的大小.

我现在已经捕获了用户点击Select Date按钮的事件

c.BtnDateSelect = $controls.getControl($("#AdjustDate_selectbutton"),
"Tridion.Controls.Button");
$evt.addEventHandler(c.BtnDateSelect, "click", 
this.getDelegate(this._onDateButtonClicked));
Run Code Online (Sandbox Code Playgroud)

但是 - 我似乎无法访问生成的对话框的高度,因为我无法添加任何事件来配合

  1. 对话框本身的开放
  2. 用户单击"确定"或"取消"(再次调整高度)或
  3. 模态对话框正在关闭

我错过了与之相关的活动吗?

我试图用OK创建一个OK按钮的句柄

BtnDateOKSelect = 
$controls.getControl($("html#DatePickerPopup.popup body center div#buttonContainer div#ButtonOk.tridion"),
 "Tridion.Controls.Button");
Run Code Online (Sandbox Code Playgroud)

但引用(及其变体)返回undefined - 可能是因为这是在iframe中,所以脚本无法访问它?

有关计算我可以绑定的事件的任何指示?如何与这些事件(以及何时)结合?

谢谢

user-interface tridion tridion2009

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

无法确认Tridion UI/UX中的扩展FinishActivity中是否存在isEnabled

当用户从页面或组件中选择选项时,我试图在UI/UX中捕获FinishActivity.

使用在相关配置文件中添加扩展命令的标准方法,我可以添加接口并使用下面显示的脚本捕获isAvailable方法.

Tridion.Extensions.CheckTitleOnFinishActivitySE = function Commands$CheckTitleOnFinishActivitySE() {
    Tridion.OO.enableInterface(this, "Tridion.Cme.Commands.CheckTitleOnFinishActivitySE");
    this.addInterface("Tridion.Web.UI.Editors.SiteEdit.Commands.FACommand", ["CheckTitleOnFinishActivitySE", $const.AllowedActions.FinishActivity]);
};
Run Code Online (Sandbox Code Playgroud)
Tridion.Extensions.CheckTitleOnFinishActivitySE.prototype._isAvailable = function (selection) {
    var response = Tridion.Web.UI.Editors.SiteEdit.Commands.FinishActivity.prototype._isAvailable(selection);
};
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试重用exisitng isEnabled函数时:

Tridion.Extensions.CheckTitleOnFinishActivitySE.prototype.isEnabled = function (selection) {
    var response = Tridion.Web.UI.Editors.SiteEdit.Commands.FinishActivity.prototype._isEnabled(selection);
};
Run Code Online (Sandbox Code Playgroud)

甚至从siteedit函数本身复制现有代码(我显然不愿意这样做)

Tridion.Extensions.CheckTitleOnFinishActivitySE.prototype.isEnabled = function (selection) {
    return (selection && selection.getProperty && selection.getProperty("isSEPage")) && 
        this.callBase("Tridion.Cme.Command", "_isEnabled", [selection]);
};
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

无法在[tcm:8-349-131200]上执行命令"FinishActivity".原因:未启用.

我可以通过在isEnabled函数中使用return true来强制启用状态,但我宁愿继承/重用现有的检查来满足当前和未来的情况......

我可以确认_ isAvailable被捕获并返回true并且扩展所需的函数是isEnabled而不是_ isEnabled(单独添加后者或者除了isEnabled之外没有效果)

任何建议都会很精彩!

提前致谢.

更新 - 调试添加

所以,我在扩展的isEnabled中添加了以下内容,以跟踪我的isEnabled'v'中选择对象的响应之间的差异,默认为isEnabled:

'workflow.js'显示isSEPage属性为true的值 - 但是直接在我的函数中检查它是错误的.它读取一致然后从我的isEnabled调用到原始它然后也返回false.我不明白选择会发生什么,或者我会处理不同的选择对象/上下文? …

workflow tridion siteedit

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

数组类型被选为数组值

我有一些简单的Javascript循环遍历项目数组(Tridion用户组)来检查用户是否是特定组的成员.

我可以轻松编写下面显示的问题(参见参考资料&& extensionGroup !== 'true'),但我想了解为什么isArray= true被计算为数组中的 - 任何想法?

下面的屏幕截图显示了extensionGroups已设置的值

var extensionGroups = ["NotEvenARealGroup", "Author", "ExampleGroupAfterOneUserIsActuallyIn"]; 
Run Code Online (Sandbox Code Playgroud)

但是将isArray值作为第4个值返回?

更新以显示图像更清晰

萤火虫 - 对象

Firebug  - 代码

javascript arrays tridion tridion-2011

4
推荐指数
1
解决办法
68
查看次数