Viewsのフィールド出力を条件分岐

去年書いた記事ですが、こんなのよりはるかに簡単にViewsのフィールド出力を条件分岐できるのに気づきました。

去年の記事はViews PHPモジュールを使うのがポイントになっていますが、Views PHPモジュール紹介ページでも「このモジュールを使わずに、通常のハンドラーやプラグインで間に合わせられればそっちがオススメ」とまで書かれているように、うまく動作しないことがままあり、またAvailable variablesと出てきてもうまく機能しなくて、面倒なスクリプトを書くことになってしまいます。

今更ながら、こんなことをしなくても、Views3のフィールドの設定で、「NO RESULT BEHAVIOR」と「REWRITE RESULTS」を同時に設定することで条件分岐できることに気がついたワケです。

例えば、コンテンツに、PDFフィールドというのがあって、そこに値があれば、画像のリンク先をPDFそのものに、値がなければ画像のある元のコンテンツへのリンクとする場合、

パスと画像、PDFフィールドを引っ張ってきて、パスと画像は非表示にして、画像はリンクなしにしておきます。PDFフィールドではフォーマッターをファイルのURLとしておいて、

NO RESULT BEHAVIOR:

<a href="[path]">[field_images]</a>

REWRITE RESULTS:

<a href="[field_pdf]" target="_blank">[field_images]</a>

これだけでOKです。PHPをいじくりまわさず、Viewsの設定画面だけでもアイデアと工夫次第と改めて気付かされた次第です。

去年の記事のViews PHPを使ったものと同じものを上記の設定に代えた出力を貼っておきます。最初の画像だけがPDFへ直リンク、その他は元のノードへのリンクです。