【问题标题】:Ektron WorkareaEktron 工作区
【发布时间】:2013-01-24 05:43:34
【问题描述】:

我需要开发一个应用程序来提取 Ektron 工作区的内容选项卡中的所有内容,并且我还必须保留文件夹的树结构(分类、集合、表单等)。当我单击内容时,我需要还可以在后面的代码中获取内容 ID。我需要在一个函数中完成所有这些操作。

我在工作区中使用内容块小部件的概念尝试了此要求。当我们拖动该小部件并对其进行编辑时,会出现一个弹出窗口,它以树形结构显示工作区的文件夹。但是当我创建一个 aspx 页面时,输入相同的代码并浏览该页面我没有得到所有内容的树结构。只有主选项卡(文件夹、分类法和搜索)可见。然后我将用户控件拖到 aspx 页面中。但它也没有工作。

那么我将如何解决上述问题。

我可以使用API​​代码从根工作区中提取树结构中的所有内容吗?那么任何人都可以提供API代码来解决吗?

请任何人回复!

【问题讨论】:

  • 如果您要求提供 API 代码,您需要指定您正在运行的 Ektron 版本。

标签: ektron


【解决方案1】:

【讨论】:

    【解决方案2】:

    更新:

    我想我第一次看错了你的问题。请允许我稍微扩展一下我的答案。我对 Web 服务的原始回答假设您正在从某种“表示层”呈现内容树——不同的网站、控制台应用程序或 WPF/WinForms 应用程序等。

    您可以通过以下方式获得递归文件夹结构:

    private FolderData GetFolderWithChildren(long folderId)
    {
        var folderApi = new Ektron.Cms.API.Folder(); 
        var folderData = folderApi.GetFolder(folderId);
    
        // This next method is marked as obsolete in v9.0;
        // a newer overload is available in v9.0, but I
        // don't know if it's available in v8.0
        folderData.ChildFolders = folderApi.GetChildFolders(folderId, true);
    }
    

    我对你到底想要完成什么感到有点困惑。如果您想以图形方式显示整个树结构,您是否尝试过从内容小部件的编辑视图中获取代码和标记并将其用于非编辑视图?

    我必须说,您对“我需要在一个函数中完成所有这些操作” 的要求让我有点担心。工作区内容树可以很快变得非常大。如果您尝试加载所有文件夹所有分类法所有集合等。那么用户可能会等待很长时间才能看到页面加载,您可能会遇到超时问题。

    -- 原始答案--

    Ektron v8.0 没有 3 层选项,这太糟糕了,因为这确实会让您的工作轻松很多。在 v8.0 中,有一些 ASMX Web 服务可供您参考,包括:

    • /workarea/webservices/content.asmx
    • /workarea/webservices/webserviceapi/user/user.asmx

    除此之外还有很多;浏览 /workarea/ 中的文件夹以查看可用的内容。

    我已经有一段时间没有使用这些服务了,所以我有点生疏......

    假设您添加了对我上面列出的这两个服务的引用,并将它们命名为 ContentService 和 UserService。您要做的第一件事是设置身份验证标头。然后,您可以像旧的遗留 api 一样调用服务方法。

        var contentApi = new ContentService.Content();
        contentApi.AuthenticationHeaderValue = new ContentService.AuthenticationHeader();
        contentApi.AuthenticationHeaderValue.Username = username;
        contentApi.AuthenticationHeaderValue.Password = password;
        contentApi.AuthenticationHeaderValue.Domain = domain;
    
        var userApi = new UserService.User();
        userApi.AuthenticationHeaderValue = new UserService.AuthenticationHeader();
        userApi.AuthenticationHeaderValue.Username = username;
        userApi.AuthenticationHeaderValue.Password = password;
        userApi.AuthenticationHeaderValue.Domain = domain;
    
        var ud = userApi.GetUserbyUsername("jimmy456");
    
        long folderID = 85;
        bool recursive = true;
        ContentData[] folderContent = contentApi.GetChildContent(folderID, recursive, "content_id");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      相关资源
      最近更新 更多