web-dev-qa-db-ja.com

ビューのコンテンツに「新規」のラベルを付けるにはどうすればよいですか?

drupalサイト(workaround.org)のホームページにビュー付きのパネルを使用しています。しかし、作成または編集された記事の前に「新しい」ラベルを付けたいです過去2週間です。ビューフィールド "Node:has new content"は、匿名ユーザーに対してすべてのコンテンツに "new"のフラグを立てるため、役に立ちませんでした。代わりに、最近追加されたコンテンツを匿名ユーザーに表示したいだけです。

3
user108454

簡単なものから複雑なものまで下にランク付けされたいくつかの提案があります。

  1. 静的テキストフィールドをビューに追加し、テキストフィールドに「新規」と書き込んで、「新規」ラベルを付けたい期間のコンテンツのみが含まれるようにビューをフィルタリングできます。
  2. 同じリストにさらに多くのコンテンツを表示する場合は、同じビューでattachmentディスプレイを作成し、テキストフィールドと日付フィルターをオーバーライドして、ディスプレイをattachに設定します最初のものの後
  3. ビューのTheme informationを使用して、ビューの出力を直接オーバーライドします。テンプレートでコンテンツIDを見つけ、ノードをロードして、作成日を確認します。
  4. フィールドごとではなく、ビューモードを使用してコンテンツをレンダリングします。ノードテンプレートで、ノードの作成日を確認してラベルを出力できるようになりました。このソリューションは、追加された「per-view-mode」テーマ提案から利益を得る可能性があります。
4
Letharion

Views PHP モジュールを使用して、ノードの作成日が過去2週間以内かどうかを確認する小さなカスタムコードを記述し、ラベルを印刷できます。

このようなもの(私は[疑似フィールド名]を使用しています。正しいものを確認する必要があります)

$show_date = time() - (60*60*24*7*2); //time minus 2 weeks
if ($data->[node_updated_date] <= $show_date) {
  print '<span class="new-label">New</span>';
}

使用するフィールド名を確認するには、開発モジュールのdpm($ data);を使用して$ dataオブジェクトのコンテンツを取得できます。

Views PHPモジュールを使いすぎないようにすることをお勧めしますが、このような小さなスニペットでそれを使用する問題に遭遇したことはありません。

0