カテゴリを操作する(ブログ・データベースプラグイン)
ここでは、ブログインスタンスやデータベースインスタンスにおけるカテゴリを、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(); // 反映させるには、最後に必ず保存を実行してください