私は Drupal 7 を Views、Feeds、Views PHP モジュールと共に使用しています (特に関連するのはこれらだけだと思います)。
私の目標は、(a) フィード モジュールを介して取り込まれた複数の RSS フィード、(b) 自分のサイトで手動で作成されたコンテンツ用の 2 つまたは 3 つの独自のコンテンツ タイプを組み合わせた単一のビューです。その結果、自分のサイトや別のサイト (もちろん、そのサイトに RSS フィードがある場合) がどこにあっても、私の最新のすべての作品のストリームを含むブロックとページが作成されます。
理想的な結果は、コンテンツ タイプに関係なくアイテムを混ぜ合わせて、日付で並べ替えられた 1 つのリストを表示することです。
私の問題: フィード モジュールとカスタム コンテンツ タイプの日付フィールドが異なります。私のコンテンツ タイプには、Original Date というフィールドがあり、コンテンツを作成するときに設定します (たとえば、3 年前に書いた記事を追加する場合など)。サイト)。ただし、各 feed_item には日付フィールド Published Date があり、RSS フィードの日付に対応し、残りのアイテムと共に RSS によって受信されます。
Views PHP 機能を使用して、さまざまな方法で if/then ステートメントを使用しようとしました。たとえば、content_type を確認し、コンテンツ タイプに応じて変数を元の日付または公開日のいずれかに設定します。または、元の日付フィールドが設定されているかどうかをテストしました。その場合はそのフィールドを返し、そうでない場合は Published Date フィールドを返します。それらはすべてさまざまな方法で失敗します。ほとんどの場合、匿名ユーザーにも表示される PHP エラーがスローされます (明らかに問題です)。
ビューのソート基準セクションでこれらのさまざまなアプローチを直接試しました。また、[フィールド] セクションで日付を考え出し、その結果を並べ替え条件で呼び出すようにしました。簡単にソートできるように、すべてを Unix タイムスタンプに変換しました。日付を日付のままにしてみました。どちらにしても運はありません。
ここに本当に奇妙な部分があります。これらのアプローチを使用して正しい日付を表示することに成功したため、(たとえば) ブロックは次のように表示されます。カスタム コンテンツ タイプの元の日付、および • TITLE | フィード項目の公開日。しかし、日付で並べ替えるために同じアプローチを試みると、失敗します。
もっと単純なものを見落としていますか?PHP ビューを使用する必要がありますか? 2 つの異なる (似ていますが) フィールドの組み合わせによって、複数のコンテンツ タイプのビューを並べ替える他の方法はありますか?
ありがとう!
tf