エクスプレスの属性に、『この項目を表示しない』という属性を設定して、一覧表示する時に非表示にしたい

2017年4月7日 at 18:29

現在エクスプレスを使用してサイト作成しているのですが、一部の項目について、原稿が完全に揃ってから公開したいということになり、
『この項目を表示しない』という属性を追加して表示を制御できないか?という要望が出ました。

試行錯誤してみたのですが、view.php上で該当の項目を隠すこと自体は出来るのですが、
count($results) で表示出来る項目の総数や、ページネーションについては、非表示にしたい項目の分を含めた数で表示されてしまいます。

$results = $result->getItemListObject()->getResults(); で取得している内容から、該当する属性がある項目を抜くことが出来ると良いのでしょうけど、
上記は controller.php を変更しないと出来なさそうに見えます。
また、色々ソースを見てみたのですが、どうすれば出来そうかもまだ分かりません……。

もし、方法が分かる方いらっしゃいましたら、ご教授頂けるとありがたいです。

タグ:

Re: エクスプレスの属性に、『この項目を表示しない』という属性を設定して、一覧表示する時に非表示にしたい

2017年4月7日 at 19:49
単純に表示フォームを作ればいいんじゃ?

あと、任意に項目の表示もできます。未翻訳ですがドキュメント
http://documentation.concrete5.org/developers/express/using-the-express-entry-block-to-output-entry-data
 

Re: エクスプレスの属性に、『この項目を表示しない』という属性を設定して、一覧表示する時に非表示にしたい

2017年4月7日 at 19:50
あ、質問を勘違いしてた。やりたいのはこれなんでしょうね。(未検証)

$list = $result->getItemListObject();
$list->filterByAttribute('exclude_list', false);
$results = $list->getResults();
 

Re: エクスプレスの属性に、『この項目を表示しない』という属性を設定して、一覧表示する時に非表示にしたい

2017年4月10日 at 12:58
ありがとうございます。
エクスプレスオブジェクトもPagelistオブジェクトと同じ操作が出来るんですね……。
下記も参考にして色々試してみます。

PageList オブジェクトで検索・ソートを行う
http://concrete5-japan.org/help/5-7/developer/working-with-pages/searching-and-sorting-with-the-pagelist-object/
 

Re: エクスプレスの属性に、『この項目を表示しない』という属性を設定して、一覧表示する時に非表示にしたい

2017年4月11日 at 12:36
こちら、修正出来ました。

ページネーションの表示等も変更必要なため、controllerの修正で対応しています。
また、該当の属性が設定されていないエクスプレスオブジェクトではエラーが出るので、
ハンドルで判定して処理をしています。

修正したcontoller.phpをgistにUPしました。
追加したのは42行目から48行目です。
http://gist.github.com/kanetei/ffd7fb2887cf02ca728f2d6ce05e044e