我需要开发一个应用程序来提取Ektron Workarea的Content选项卡中的所有内容,我还必须保留文件夹的树结构(分类,集合,表格等)。当我点击我需要的内容时在后面的代码中获取Content ID。我需要在一个函数中完成所有这些。
我在工作区中使用内容块小部件的概念尝试了这个要求。当我们拖动该小部件并对其进行编辑时,弹出窗口会显示树结构中的工作区文件夹。但是当我创建一个aspx页面时,把相同的代码和浏览页面我没有得到所有内容的树结构。只有主要标签(文件夹,分类和搜索)是可见的。然后我在aspx页面中拖动用户控件。但它也是doest工作
那么我将如何解决上述问题。
我可以使用API代码从工作区中提取树结构中的所有内容吗?。那么有人可以给出API代码来解决吗?
请有人回复!
答案 0 :(得分:0)
假设您使用的是8.6,请从这里开始: http://reference.ektron.com/developer/framework/content/contentmanager/getlist.aspx
答案 1 :(得分:0)
我想我第一次误读了你的问题。请允许我稍微扩展一下我的答案。我对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 /中的文件夹,查看可用的内容。
自从我使用这些服务已经有一段时间了,所以我有点生疏......
假设您添加了对上面列出的这两个服务的引用,并将它们命名为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");