web-dev-qa-db-ja.com

アイテムのリストとクリックされたアイテムでビューを作成するにはどうすればよいですか?

左側にリスト、中央にアイテムの内容を表示するビューを作成したいと思います。ユーザーが左側のリスト内のアイテムをクリックすると、そのアイテムは中央の領域または列に表示される必要があります。ページを更新せずに実行する必要があります。

記事を表示するビューを考えてみてください。左側のリストには小さな画像、タイトル、トリミングされた説明が表示され、中央の列には実際にクリックされたアイテムが表示されます。

どうやってするか?

注:パネルも使用できます。

1
Umair

ここにいくつかのポインタがあります。ただし、コードを作成する必要がある場合があります。

長い答え

  • ビュー(コンテンツのリスト)をブロックとして設定し、サイドバーに配置します。
  • 上記のブロックは、node/*パス内の関連するノードタイプに対してのみ表示できます。そうすれば、メインコンテンツ領域にノードが表示されます。
  • nidを入力として受け入れ、レンダリングされたノード(マークアップ)を出力として返すカスタムモジュール(またはビューかもしれませんか?)を使用してMENU_CALLBACKを作成します。
  • 次に、Drupal.behaviorsを使用してクリックリスナーを追加し、サイドバーブロック内のリンクのクリックを上書きします。
    • ユーザーがこれらのリンクをクリックしたら、クリックされたリンクのノードIDを読み取ります。ヒント:ビューフィールドの出力を書き直して、<h2 data-nid="XXX">Node Title</h2>などのノードIDを持つ属性を含めると、jQueryを使用してノードIDを簡単に読み取ることができます。
    • clickコールバックがfalseを返すことを確認して、デフォルトのクリックイベントがコールバックで終了するようにします。
    • このnode-idを使用して、上記で準備したAJAXコールバックに送信します。したがって、AJAX応答では、関連するノードのマークアップを取得します。
    • ここで、レンダリングされたノードマークアップを#block-system-main .content(メインページのコンテンツブロック)に配置するだけです。

短い答え

  • サイドバーに配置されたビューブロックにノードプレビュー/ティーザーを一覧表示します。
  • ユーザーがビュー内のリンクをクリックします。
  • node-idは、ノードのマークアップをフェッチするためにサーバーに送信され、デフォルトのクリックイベントが強制終了されます。
  • ノードのマークアップはメインコンテンツ領域に表示されます(:

お役に立てれば。

1
Jigarius

ビューには詳細設定にAjaxオプションがありますが、適切な場合とそうでない場合、または上記の説明に十分な機能がある場合があります。

前の回答を参照してください https://stackoverflow.com/questions/3016747/drupal-use-ajax-to-update-views-content および Ajaxでビューをロードして表示する方法in Drupal 7? および AJAXを使用してビューのコンテンツにアクセスする

どのソリューションでも、カスタマイズが必要な場合と不要な場合があります。

1
Darrell Ulm

すべての答えをありがとう。 drupalには、すべてのモジュールがあると誰かが言ったことは驚くべきことです。

私が見つけた 垂直タブを表示 私が望んでいたことを正確に実行するモジュール。

1
Umair

ページが更新されないということは、すべてのデータを読み込んでJSで非表示にするか、AJAXを使用してデータを取り込む必要があることを意味します。私は個人的にビューでそのようなことを知りません。

Panelsの使用に問題がない場合は、「Panels Ajax Tabs」が探しているものかもしれませんが、箱から出してすぐに必要なことができるかどうかはわかりません。

0
kombogdan