記事を操作する(ブログプラグイン)
ここでは、サイトアカウントに存在するブログインスタンスを、SDKから操作する方法について解説します。
記事オブジェクトECHOEntryObject
ECHOEntryObjectは、個別記事を操作するためのオブジェクトです。
オブジェクトを生成する
新しい記事としてオブジェクトを初期化するには、初期化メソッドの第一引数にブログインスタンスのIDを指定します。
ECHOEntryObject *entry = [[ECHOEntryObject alloc] initWithInstanceId:@"ブログインスタンスID"];
既存記事としてオブジェクトを初期化するには、コンストラクタの第二引数に記事IDを指定します。
ECHOEntryObject *entry = [[ECHOEntryObject alloc] initWithInstanceId:@"ブログインスタンスID" refid:@"記事ID"];
オブジェクトフィールド
記事オブジェクトは、以下のフィールドを持ちます。
フィールド名 | 型 | 説明 | 可変 |
---|---|---|---|
refid | NSString | 記事ID | ◯ |
url | NSString | URL | × |
url_path | NSString | URLパス | × |
title | NSString | 記事タイトル | ◯ |
description | NString | 概要 | ◯ |
keywords | NString | キーワード | ◯ |
robots | NString | 検索エンジンロボット制御 | ◯ |
contents | NSDictionary | 記事コンテンツ | ◯ |
link_status | NSNumber | リンク設定値
|
◯ |
modified | NSDate | 最終更新日時 | × |
created | NSDate | 作成日時 | × |
published | NSDate | 記事日時 | ◯ |
categories | NSArray<ECHOContentsCategoryObject> | 所属カテゴリ | ◯ |
フィールドからデータを取得する
オブジェクトのフィールドからデータを取得する場合は、objectForStringメソッドを使用します。
id title = [entry objectForgetString("title");
フィールドにデータをセットする
オブジェクトのフィールドにデータをセットするには、setObject:forKey:メソッドを使用します。
[entry setObject:@"新しい記事" forKey:@"title"];
[entry setObject:@{@"name":@"記事コンテンツです。"}];
記事を保存する
リモートサーバーへ記事を保存するには、push:メソッド(同期通信による保存)もしくはpushInBackgroundWithBlock:メソッド(非同期通信による保存)を使用します。
ECHOEntryObject *entry = [[ECHOEntryObject alloc] initWithInstanceId:@"ブログインスタンスID"];
[entry setObject:@"新しい記事" forKey:@"title"]; // 記事のタイトルをセット
[entry setObject:@"20150305" forKey:@"refid"]; // 記事IDをセット
....
// 非同期で記事を保存
[entry pushInBackgroundWithBlock:^(NSError *e) {
if(e == null) { // 正常終了
NSLog(@"Complete: %@", entry);
}else{ // 異常発生
NSLog(@"Error: %@", e);
}
}];
記事を取得する
リモートサーバーに存在する記事を取得するには、fetch:メソッド(同期通信による取得)もしくはfetchInBackgroundWithBlock:メソッド(非同期通信による取得)を使用します。
ECHOEntryObject *entry = [[ECHOEntryObject alloc] initWithInstanceId:@"ブログインスタンスID" refid:@"記事ID"];
// 非同期で記事を取得
[entry fetchInBackgroundWithBlock:^(NSError *e) {
if(e == null) { // 正常終了
NSLog(@"Complete: %@", entry);
}else{ // 異常発生
NSLog(@"Error: %@", e);
}
}];
記事を削除する
リモートサーバーに存在する記事を削除するには、delete:メソッド(同期通信による削除)もしくはdeleteInBackgroundWithBlock:メソッド(非同期通信による削除)を使用します。
ECHOEntryObject *entry = [[ECHOEntryObject alloc] initWithInstanceId:@"ブログインスタンスID" refid:@"記事ID"];
// 非同期で記事を削除[entry deleteInBackgroundWithBlock:^(NSError *e) {
if(e == null) { // 正常終了
NSLog(@"Complete");
}else{ // 異常発生
NSLog(@"Error: %@", e);
}
}];
記事を検索する
記事を検索するには、[ECHOBlogQuery findWithInstanceId:params:returningError:](同期通信による検索)もしくは[ECHOBlogQuery findInBackgroundWithBlock:instanceId:params:] (非同期通信による検索)を使用します。
第二引数にリスト制御パラメータを与えることで、データの検索・抽出条件を指定することが可能です。
// 非同期で記事を検索
[ECHOBlogQuery findInBackgroundWithBlock:^(NSArray *objects, NSError *error) {if(e == null) { // 正常終了
NSLog(@"Complete: %@", objects);
}else{ // 異常発生
NSLog(@"Error: %@", e);
}
} instanceId:@"ブログインスタンスID" params:@{@"q":@"検索キーワード"}];
現在のACLを取得する
オブジェクトに現在設定されているACLを取得するには、currentACLプロパティを使用します。
ECHOACLObject *current_acl = member.currentACL;
ACLを変更する
オブジェクトに新しいACLを設定するには、setNewACL:メソッドを使用します。
ECHOACLObject *new_acl = [[ECHOACLObject alloc] init]; // ACLオブジェクトを生成
[new_acl putEntryForAll: [[ECHOACLEntry alloc] initWithGet:NO list:NO edit:NO delete:NO] ]; // 例:非ログイン訪問者の操作権限を全て奪う
[entry setNewACL:new_acl]; // 新しいACLをセット
[entry push:nil]; // セットしたACLを反映させるには、最後に必ず保存を実行してください