使用Javascript进行图像组件链接

时间:2013-01-30 07:23:43

标签: javascript tridion

我在Tridion中有一个嵌入式组件,它有Image字段(名为leadImage)。使用自定义弹出窗口我想在此图像字段(leadImage)中链接图像。可能吗?这必须通过单击组件的“保存”事件来完成,因此主要是jquery / javascript。

要链接的图像已在CMS系统中。默认情况下,它会通过在自定义弹出窗口中执行其他操作来创建。我将为图像提供tcmid /图像名称等。

无法找到关于Anguilla Api的大量文档来帮助我实现这一目标。

3 个答案:

答案 0 :(得分:6)

是的,可以使用Anguilla框架覆盖SDL Tridion GUI中的“插入组件”按钮。

关于anquilla框架有很多帖子......我建议你使用http://albertromkes.com/2012/01/30/tridion-gui-extensions-how-to-load-a-javascript-without-showing-a-gui-element/来向你展示如何将自己的javascript注入特定的“视图”

要覆盖插入组件按钮,只需删除事件处理程序:

// remove the default insert behavior which is to open up the item select dialog
$log.message("Removing handlers for the insert event");
$evt.removeAllEventHandlers(fieldBuilder, "insert");

然后,您可以通过添加自己的事件处理程序将自己的功能放在那里:

// add our own insert behavior
$log.message("Adding a custom handler for the insert event");
$evt.addEventHandler(fieldBuilder, "insert", function(event) {
  // whatever it is you wish to do :)
}

希望这有帮助!

答案 1 :(得分:0)

我假设“嵌入式组件”为Component Link,允许Multimedia Links或可能Multimedia Link本身(在架构字段选项中)。

开箱即用的架构字段默认值

除了您使用“自定义弹出窗口中的其他操作”创建图像以设置默认链接组件之外,您可以:

  1. 在架构字段
  2. 中的链接项目中设置Default Value
  3. 在模板或渲染逻辑中设置Default
  4. 关系

    否则,使用多种方法之一创建图像之间的关系:

    • 手动策划列表(“链接列表”或“容器”组件)
    • “配置”组件(键值对)
    • 组织项目 - 特定文件夹中的项目
    • 命名约定 - 具有相似名称的项目一起呈现
    • 类别和关键词(分类法分类)

    作者希望能够控制他们链接到哪些图像或自动添加它们以进行渲染。它不一定必须在组件中。

    更改和BluePrinting

    虽然特定字段的扩展名肯定是可能的,但是为特定架构字段中的特定字段创建此扩展程序存在风险。确保您的方法适用于新组件,新逻辑和架构更改。

    如果您有编程要求添加leadimage,请考虑将其置于模板逻辑中,可以在所有组件演示文稿中跨出版物轻松更改,而无需重新访问每个组件。 还要确保您的组件ID使用正确的发布ID来创建这些组件的位置。

    例如,您需要处理本地化版本,其中tcm-id来自较低的出版物,而不是020内容出版物。

    听起来像一个有趣的要求,请对其他行动应做的事情发表评论。

答案 2 :(得分:0)

感谢John的快速回复。这符合我的要求。

由于我的字段构建器将包含许多字段,因此我修改了代码,如下所示:

var imageField = fieldBuilder.getField("lead_image"); // Where lead_image is the name for ImageField in this component

// remove the default insert behavior which is to open up the item select dialog
$log.message("Removing handlers for the insert event");
$evt.removeAllEventHandlers(imageField "insert");

// add our own insert behavior
$log.message("Adding a custom handler for the insert event");
$evt.addEventHandler(imageField , "insert", function(event) {
}

在addeventhandler中可以根据需要设置Title和ImageIcon吗?无法在Anquilla Api或其他任何地方找到它。