2012-01-13 11 views
0

ExpressionEngineテンプレートでJSONを作成し、関連するURLにRuby JSONライブラリを指定しています。テンプレートは次のようになります。ExpressionEngineテンプレートは空のJSON配列を出力しません

[ 
{exp:mylib:mytag channel="mychannel" backspace="1"} 
    {"entry_id":"{entry_id}","title":"{title}"}, 
{/exp:mylib:mytag} 
] 

タグはデータを返し、すべてが私のRubyコードは、オブジェクトの配列と完全に動作し、罰金です。しかし、タグがデータを返さない場合(適切なエントリがないため)、Rubyはjson文字列が必要な2オクテット長ではないと不満を表明します。私は、出力が[]、すなわち空ではあるが有効なJSON配列であることを期待しています。しかし、Firefox/firebugとwgetのURLを参照すると、URLから戻ってくる応答は長さ0バイトでステータス200 OKであることが確認されます。

タグなしのテンプレートと空の角かっこのペアを作成し、同じ結果を返します(ゼロバイト)。

空の角かっこのペアは、EEテンプレート言語の予約トークンです。誰もhtmlページ内に大括弧で囲む必要がないと仮定して、巧妙な最適化が行われていますか?

答えて

1

独自のアドオンを開発していますか、組み込みのExpressionEngineタグを使用していますか?

{exp:channel:entries channel="channel_name"} 
    {if no_results} ...{/if} 
{/exp:channel:entries} 

多くのサードパーティのアドオンもの同じタイプをサポート:ネイティブチャネルを使用して

あなたが一致する結果がない場合に出力を得るかを制御するためにif_no_results条件付きタグを使用することができ、クエリのエントリ{if_no_results}を条件とします。

また、サードパーティのExpressionEngine JSONアドオンもあります。このアドオンは、あなたの状況にどのようにアプローチするかについてのインスピレーションを与えるかもしれません。

+0

タグの出力に関するものではありません。文字通り2文字の '[]'(_no_ tags)で構成されるテンプレートは、EEで処理すると空白になります。 – iftheshoefritz

+0

EEテンプレートプリファレンスマネージャで設定されているもの(PHPが有効になっているもの)[*テンプレートタイプ*](http://expressionengine.com/user_guide/cp/design/templates/new_template.html#template-type) – rjb

+0

{if_no_results}条件の提案を使用します。 – iftheshoefritz

関連する問題