【问题标题】:How to get the schema name from the schema object in Tridion?如何从 Tridion 中的模式对象中获取模式名称?
【发布时间】:2012-06-29 07:09:17
【问题描述】:

作为将按钮实现到功能区工具栏的一部分。我需要 Button java 脚本文件中的模式名称。所以我正在尝试使用以下命令来获取架构对象。

$display.getView().getItem().getSchema();

上述命令将返回架构对象。但是如何从模式对象中获取模式标题。请帮我解决这个问题。提前致谢。感谢您尽早回复。

【问题讨论】:

    标签: tridion tridion-2011


    【解决方案1】:

    您需要通过在模式对象上调用 .load(true) 来加载项目信息。因为(显然)由于性能原因,并非所有信息都被加载。

    由于 .load() 调用是异步的,您必须使用回调函数来“知道”加载何时完成。

    您可以使用以下代码加载项目并读取其属性(代码简化):

    var schemaObject = $display.getView().getItem().getSchema();
    function loaded()
    {
        alert(schemaObject.getTitle());
    }
    $evt.addEventHandler(schemaObject, "load", loaded);
    schemaObject.load(true);
    

    【讨论】:

    • 感谢您的回复。如果在 load() 方法中放置警报,它就可以工作。如果不是,则返回 NULL。似乎需要一些时间来加载。如何避免这种情况?你能解释一下解决方案吗?提前致谢。
    • 你不会“避免”那个。这是一个异步过程。相反,您应该使用事件(例如查看 $evt.addEventHandler)来触发您的代码在您需要的时候运行。
    • 我会检查 getStaticTitle 是否首先返回任何内容 - 标题是可能实际加载的属性之一,即使项目的其余部分没有(因为指向其他项目的链接通常具有ID和目标的标题)
    【解决方案2】:

    使用以下命令可以访问架构名称。

    $display.getView().getItem().getSchema().getStaticTitle();
    

    感谢罗姆克斯的帮助。

    嘿 Pufflin,我并不是说这是唯一的解决方案。但是这个命令正在毫无延迟地工作。对不起,如果我伤害了任何人的感情。

    【讨论】:

    • 这仅在项目已加载到列表中时才有效。这显然是在您的测试中,但您的用户可能会发现该项目尚未加载的情况。帮自己和您的用户一个忙,并坚持 Albert 建议的方法:您的代码在 Web UI 中运行,并且可能需要从远程服务器获取信息。
    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 2017-09-06
    相关资源
    最近更新 更多