2

Ektron ワークエリアの [コンテンツ] タブにあるすべてのコンテンツを抽出するアプリケーションを開発する必要があり、フォルダーのツリー構造 (タクソノミー、コレクション、フォームなど) も維持する必要があります。コンテンツをクリックすると、コンテンツを取得する必要があります。コード ビハインドの ID も 1 つの関数でこれらすべてを実行する必要があります。

ワークエリアのコンテンツ ブロック ウィジェットの概念でこの要件を試しました。そのウィジェットをドラッグして編集すると、ポップアップが表示され、ワー​​クエリアのフォルダーがツリー構造で表示されます。しかし、aspx ページを作成したときに、同じすべてのコンテンツのツリー構造を取得できませんでした。メインのタブ (フォルダー、分類法、検索) のみが表示されます。次に、ユーザー コントロールを aspx ページにドラッグします。しかし、それも機能しません。

では、上記の問題をどのように解決しますか。

API コードを使用して、ツリー構造のすべてのコンテンツをワークエリアからルートからプルできますか? では、解決する API コードを教えてください。

どなたか回答お願いします!

4

2 に答える 2

0

アップデート:

私は最初にあなたの質問を読み違えたと思います。私の答えを少し広げさせてください。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");
于 2013-11-05T03:41:11.693 に答える
0

8.6 を使用していると仮定すると、まずここを参照してください: http://reference.ektron.com/developer/framework/content/contentmanager/getlist.aspx

于 2013-03-18T17:03:08.893 に答える