記事を操作する(ブログプラグイン)

ここでは、サイトアカウントに存在するブログインスタンスを、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 リンク設定値
  • 1:通常リンク
  • 2:セキュアリンク
  • -1:リンクしない
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を反映させるには、最後に必ず保存を実行してください