smileAP

dataAPIの記述

0

http://www.koikikukan.com/archives/2013/08/22-005555.php
こちらに丁寧な説明があったのですが、不明点が2つあります。

fields: 'title, permalink'
という記述にカスタムフィールドを加えるのは、
fields: 'title, permalink,customFields'
で正しいでしょうか。
派生して、特定のカスタムフィールドのみ対象にする記述があれば知りたいです。
「customFields」だけだとすべてのカスタムフィールドが対象になりそうな気がしたので。


もう1点は、カスタムフィールドを出力する記述です。
少しソースを拝借させていだきまと、こちらの
for (i=0; i jQuery('#result').append($('

  • ').append(response.items[i].title));
    }
    「response.items[i].title」の変わりに
    カスタムフィールドのベースネーム cf_hoge に入れた値を取得するには、
    どんな記述をすれば良いのでしょうか。
  • むしろjsの記述のお話な気がしていて、気が引けますがよろしくお願いします。

    返信(4)

    | 返信する
    • 1点目はMT6環境が無いため確認できませんが、下記サイトの出力結果(返値)を見る限り「特定のカスタムフィールドのみ対象にする」という事は難しいように思います。

      【Movable Type6の新機能DataAPIを使ってみよう!記事の一覧を取得する「listEntries」 - WebCake ウェブケイク】
      http://webcake.no003.info/webdesign/mt6-dataapi-listentries.html

      また、上記サイトの出力結果を参考に小粋空間さんのコードをカスタムフィールドcf_hogeを出力するように書き換えるなら、下記のようなコードになると思います。(たぶん)


      var siteId = 2;
      var params = {
          limit: 3
      };
      api.listEntries(siteId, param, function(response) {
          var i, l, ii, ll, txt;
          if (response.error) {
              return;
          }
          l = response.items.length;
          for (i=0; i< l; i++) {
              ll = response.items[i].customFields.length;
              txt = '';
              for (ii=0; ii< ll; ii++) {
                  if (response.items[i].customFields[ii].basename === 'cf_hoge') {
                      txt = response.items[i].customFields[ii].value;
                  }
              }
              jQuery('#result').append($('<li>').append(txt));
          }
      });

    • kei344さん
      ありがとうございます!

      > 出力結果(返値)を見る限り「特定のカスタムフィールドのみ対象にする」という事は難しいように思います。
      なるほど。
      この辺りの絞込をapiがサクッとやってもらえると処理が早そうなんですが。。
      ちなみに fields: "customFields" という大雑把なくくりは一応機能しているみたいでした。

      MTタグのようにcf_hoge(MTcf_hoge)というベースネームからのアプローチだと、api上は取れないような感じもしてまして、
      結局はいただいたソースのように、受け取ってさらに絞込を掛ける感じですよね。

      単純な取得の場合は、カスタムフィールドにシステムが振っているナンバー?を指定するようでした。
      MTのタグと同様にベースネームで取得できるた方が使い勝手が良いのですが、このAPIでは難しいのでしょうか。
      この仕様だとナンバー?がそもそも何の値なのかちゃんと把握していないといけなそうですが、何の値なのでしょうか。
      まさか作った順とか?

      また、記事をリストする際のパラメータにsearchがありました。
      titieなど基本のフィールドでは機能するのですが、カスタムフィールドは対象になっていないようです。
      現行の挙動として正しいのかわかりませんが、
      カスタムフィールドで機能しないと用途が限られてしまうので何か方法があれば知りたいところです。

    • > カスタムフィールドにシステムが振っているナンバー
      jsの配列で値が入っているので、厳密にはシステム(MT)が振っているナンバーと言うわけではありません。(jsで行っているのは「配列の○番目の要素を取り出す」という操作です)

      > ベースネームで取得できるた方が使い勝手が良いのですが、
      私もそう思います。ただ、カスタムフィールドのベースネームで使える文字と、変数に使える文字が違うため、MT5等からの連続性を保持するためにこういう形に納めたのかなと思います。

      > この仕様だとナンバー?がそもそも何の値なのかちゃんと把握していないといけなそうですが、何の値なのでしょうか。
      > まさか作った順とか?
      順序は多分登録順(作った順)ですが、ここのプログラムを書く際には「何番目」という書き方をするものではなく、「○○という要素を持つ項目」(配列をループでbasenameを1つずつ確認する)という扱いをする想定かなと思います。
      ここもベースネームの制約(jsの予約語とのバッティング対策)が足引っ張っている感じがします。

      検索についてはそのうちAPIのバージョンが上がるのを待つか、プラグインを作成するかどちらかしかないと思います。

    • ご丁寧にありがとうございます。
      いろいろできそうな気配はあるのですが、
      受け取り方、受け取った後の加工、処理速度への配慮などある程度のスキルが必要で、
      さらっといけるかというとそうでもない気がしました。(api絡みはそういうものなのかもしれませんが)
      これを使うためにしどろもどろしてるくらいなら、
      他の方法を考えた方が早くなってしまうので、うまい事使えるようになるといいですね。

      この度は貴重なご助言ありがとうございました。
      またの機会もよろしくお願いします。

    返信する


    カテゴリグループ

    フォーラムカテゴリー

    21 76

    最新のトピック: 公開終了日の取り消し (2013年10月18日 gsk)

    178 552

    最新のトピック: ユーザへアカウント発行通知 (2014年1月27日 cmtskt)

    143 426

    最新のトピック: アイテム・カスタムフィールドの連動 (2013年12月16日 kazuhiro watanabe)

    291 819

    最新のトピック: 検索についての質問 (2014年1月23日 noble777)

    OpenID対応しています OpenIDについて