カテゴリを操作する(ブログ・データベースプラグイン)
ここでは、ブログインスタンスやデータベースインスタンスにおけるカテゴリを、SDKから操作する方法について解説します。
カテゴリオブジェクトECHO.ContentsCategoryObject
ContentsCategoryObjectは、カテゴリを操作するためのオブジェクトです。
オブジェクトを生成する
新しいカテゴリをオブジェクトとして生成するには、コンストラクタの第一引数にブログインスタンスまたはデータベースインスタンスのIDを指定します。
var category = new ECHO.ContentsCategoryObject("インスタンスID");
既存のカテゴリをオブジェクトとして生成するには、コンストラクタの第二引数にカテゴリIDを指定します。
var category = new ECHO.ContentsCategoryObject("インスタンスID", "カテゴリID");
オブジェクトフィールド
カテゴリオブジェクトは、以下のフィールドを持ちます。
フィールド名 | 型 | 説明 | 変更 |
---|---|---|---|
refid | String | カテゴリID | ◯ |
name | String | カテゴリ名 | ◯ |
description | String | 概要 | ◯ |
keywords | String | キーワード | ◯ |
変更不可フィールドは、サーバーから提供される静的な情報です。
フィールドからデータを取得する
フィールドからデータを取得する場合は、getメソッドを使用します。
var name = category.get("name");
フィールドにデータをセットする
オブジェクトのフィールドにデータをセットするには、putメソッドを使用します。
category.put("name", "新しいカテゴリ");
サーバーへカテゴリを保存する
サーバーへカテゴリを保存するには、pushメソッドを使用します。
var category = new ECHO.ContentsCategoryObject("インスタンスID");
category.put("name", "新しいカテゴリ"); // カテゴリ名をセット
category.put("refid", "category_xyz"); // カテゴリIDをセット
....
// カテゴリを保存
var promise = category.push();
// コールバックを定義
promise.then(function(success) { // 成功時
console.log("Complete: " + success);
}, function(error) { // 失敗時
console.log("Complete: " + error);
});
サーバーからカテゴリを取得する
サーバー上に存在する既存のカテゴリを取得するには、fetchメソッドを使用します。
var category = new ECHO.ContentsCategoryObject("インスタンスID", "カテゴリID");
// カテゴリデータを取得
var promise = category.fetch();
// コールバックを定義
promise.then(function(success) { // 成功時
console.log("Complete: " + success);
}, function(error) { // 失敗時
console.log("Complete: " + error);
});
サーバーからカテゴリを削除する
サーバー上に存在する既存のカテゴリを削除するには、deleteメソッドを使用します。
var category = new ECHO.ContentsCategoryObject("インスタンスID", "カテゴリID");
// カテゴリデータを削除var promise = category.delete();
// コールバックを定義
promise.then(function(success) { // 成功時
console.log("Complete: " + success);
}, function(error) { // 失敗時
console.log("Complete: " + error);
});
現在のACLを取得する
オブジェクトに現在設定されているACLを取得するには、getACLメソッドを使用します。
var current_acl = category.getACL();
ACLを変更する
オブジェクトに新しいACLを設定するには、setNewACLメソッドを使用します。
var new_acl = new ECHO.ACL(); // ACLオブジェクトを生成
new_acl.putEntryForAll(new ECHO.ACL.Entry(false, false, false, false)); // 例:非ログイン訪問者の操作権限を全て奪う
category.setNewACL(new_acl); // 新しいACLをセット
category.push(); // セットしたACLを反映させるには、最後に必ず保存を実行してください
カテゴリマップECHO.ContentsCategoriesMap
ContentsCategoriesMapは、ツリー構造を持つカテゴリマップを再帰的に表現します。
オブジェクトを生成する
ルートから最下層までを対象とした全カテゴリマップをオブジェクトとして生成するには、第一引数にブログインスタンスまたはデータベースインスタンスのIDを指定します。
var categories_map = new ECHO.ContentsCategoriesMap("インスタンスID"); // 全カテゴリマップオブジェクトを生成
特定のカテゴリをルートとしたサブカテゴリマップをオブジェクトとして生成するには、第二引数にルートとなるカテゴリIDを指定します。
var categories_map = new ECHO.ContentsCategoriesMap("インスタンスID", "カテゴリID"); // サブカテゴリマップオブジェクトを生成
ルートカテゴリを取得する
カテゴリマップからルートカテゴリを取得するには、nodeプロパティを参照してください。
子サブカテゴリマップを取得する
ルートカテゴリの下層に属するサブカテゴリマップ群を取得するには、childrenプロパティを参照してください。
サーバーからカテゴリマップを取得する
サーバーからカテゴリマップを取得するには、fetchメソッドを使用し、サーバーから現在のカテゴリマップを取得します。
// カテゴリマップを取得
var promise = categories_map.fetch();
// コールバックを定義
promise.then(function(success) { // 成功時
console.log("Complete: " + success);
}, function(error) { // 失敗時
console.log("Complete: " + error);
});
カテゴリの所属階層を変更する
カテゴリの所属階層を変更するには、カテゴリオブジェクトのsetNewParentメソッドを使用します。
var newParent = ECHO.ContentsCategoryObject("インスタンスID", "新しい親カテゴリID");
category.setNewParent(newParent); // 新しい親カテゴリをセット
category.push(); // 反映させるには、最後に必ず保存を実行してください