30

ここでより多くの回答を得ることを期待して、drupal.stackexchange.com からコピーします。

現在のものと同様のノードのリストを表示するという、かなり一般的な問題に直面しています。類似ノードは、現在のノードが持つ分類用語を少なくとも 1 つ持つノードとして定義されます。モジュールとして利用できるソリューションはほとんどありませんが、私が見つけたモジュール (特に条件によって類似) は、Drupal 7 のベータ段階 (「正しく動作しない」など) にあります。

また、ビューとコンテキスト フィルター ( http://scito.ch/content/show-related-nodes-block-based-taxonomy-terms-views-3-and-drupal-など) に基づくソリューションもいくつか見つけました。7 ) または関係。追加のモジュールをインストールする必要がなく、ビューが積極的に開発およびサポートされているため、カスタム ソリューションよりもビューを使用したいので、この方法が非常に気に入っています。私が回避できない問題は、「類似ノード」をそれらが共有する用語の数でソートする方法です。たとえば、「Gadget」、「Apple」、および「Phone」という用語を持つ「IPhone 4S」ノードがある場合、次の順序で同様のノードが必要です。

  1. IPhone 3 (アップル、ガジェット、電話)
  2. iPad (アップル、ガジェット、タブレット)
  3. Mac (アップル、コンピューター)
  4. ブラムリー(リンゴ、果物、木)

このビューのノードを、共有する用語の数で並べ替えるにはどうすればよいですか?

この質問はビューの構築に関するものです。モジュールまたはカスタム php ベースのソリューションを提案しないでください。ありがとうございました。

4

5 に答える 5

83
  1. ブロック ビューを作成する
  2. コンテキスト フィルターを追加 -> コンテンツ: Nid -> デフォルト値を提供 -> URL からのコンテンツ ID
  3. 関係を追加 -> コンテンツ: ノードの分類用語 -> 適切な語彙を指定
  4. 関係を追加 -> 分類用語: 上記で指定された語彙を使用するコンテンツ -> この関係を必要とするチェックをオフにします
  5. ビューの集約をオンにします (注: 下のスクリーンショットの矢印は間違った場所を指しており、2 行下を指しているはずです)
  6. タイトルのみをリストしていると仮定して、上記の #4 で設定した関係を使用するようにタイトル フィールドを編集します。
  7. Content: Nid の新しいソート条件を追加します。集計設定で、[カウント] を選択します。#4 の関係を使用し、降順で並べ替えます
  8. コンテキスト フィルターを追加 -> コンテンツ: Nid -> #4 の関係を使用 -> デフォルト値を指定 - URL からのコンテンツ ID -> 下にスクロールして [その他] を展開し、[除外] にチェックを入れて現在のノードをビューから削除します

** Views UI プレビューでこれをテストするには、以下の @garret-albright によるコメントを参照してください。**

関連ノード ビュー

于 2012-07-06T18:28:08.917 に答える
2

何を推測しますか-そのためのモジュールもあります:D

構成の手間をかけずにそのビューを提供する用語で、同様のものをお勧めします。

于 2015-02-18T10:50:08.647 に答える
0

これは、この質問に関連する代替ソリューションです。ただし、すべてのケースに当てはまるわけではありませんが、使用できれば簡単です (そして、私の意見では集計よりも安全です)。

パネルを使用します。エンティティ (ノードまたはその他のもの) を表示するパネルを作成したら、複数のビューを追加して、コンテンツの横に表示できます。これらのビューの 1 つが関連コンテンツになります。
したがって、パネルは唯一の制限です。ミニパネルを使用してブロックとして表現することは可能かもしれませんが、私自身は試していません。

前提条件

  • ビュー (d'oh!)
  • パネル
  • ビュー コンテンツ ペイン: ダウンロードする必要はありません。ビューと共にダウンロードされるctoolsモジュールにあります。
  • ページ マネージャー: ビュー コンテンツ ペインと同じ (オプション/強く推奨)。


景色

  1. 通常どおりビューを作成しますが、ブロックまたはページとして作成しないでください。両方のチェックを外します。

  2. ビューの構成ページで、エンティティの分類用語との関係を作成します。

  3. フィルタリングするコンテキスト フィルターを作成します: Taxonomy term: Term ID

  4. 別のコンテキスト フィルターを作成します:エンティティ IDまたはコンテンツ:ノードの場合はNid 。

    • これを作成している間、下部にオプションを持つ折りたたまれたフィールドセットがあります: Exclude。マークされているので確認してください。

  5. Addをクリックして、タイプContent pane の新しいディスプレイを作成します。

  6. 表示構成領域 (名前: ペイン設定) で、Argument inputを開きます。次の 2 つのオプションがあります。

    • Content: Nid source : ソースをFrom contextとして設定します。必要なコンテキストコンテンツ IDとして設定します(ノードを使用していない場合は、IDにすることができます。
    • 分類用語: 用語 ID source : そのソースをFrom contextとして設定します。Required コンテキストTerm IDとして設定します。

おめでとう!ビューの作成が完了しました。パネルの時間です (パネルの作成については、この Q/A の範囲を超えているため、あまり説明しません)。

パネル

  1. パネルを作成します (または node/%node デフォルト パネルを有効にしてバリアントを追加します)。

  2. コンテキストタブで、エンティティの分類用語との関係を作成します

  3. いずれかのペインで [コンテンツの追加] をクリックします。

  4. ビューのカテゴリを変更していない場合は、ビュー ペインに追加します。Entity ID と Term ID の両方がパネル コンテキストで使用できるようになったので、それらを設定するよう求められます。

  5. これでパネルが表示されると、このページのコンテンツを除いて、同じ用語を持つすべてのコンテンツが表示されます。

ビューの構成

ビューの構成

コンテキスト フィルター

コンテキスト フィルター

引数入力

引数入力

重要なお知らせ:

この方法を試してみると問題なく動作しますが、この記事を書いている時点では ctools にバグがありました。パッチがあります: https://www.drupal.org/node/2195211

于 2014-09-16T18:46:32.947 に答える
-2

あなたの質問の要点を完全に理解できたかどうかはわかりませんが、ノードキューが答えだと思います。http://drupal.org/project/nodequeueをチェックしてください

モジュールはよく開発されています。クライアントに使用しましたが、smartqueue API を使用してリストを作成することもできます。

お役に立てば幸いです。

于 2012-05-20T17:28:42.627 に答える