アップデート:
私は最初にあなたの質問を読み違えたと思います。私の答えを少し広げさせてください。Web サービスに関する私の最初の回答では、コンテンツ ツリーをある種の「プレゼンテーション層」 (別の 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/ 内のフォルダーを参照して、利用可能なものを確認します。
私はこれらのサービスを使用してからしばらく経っているので、少し錆びています...
上記の 2 つのサービスへの参照を追加し、それらに 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");