web-dev-qa-db-ja.com

すべてのページを提供するために、URLベースのAJAX in Drupal 7を使用する方法は?

これはjQueryだけで実行できることはわかっていますが、Drupalこれを実現する7つの方法があるかどうかを知りたいです。

AJAXを使用して、サイトのすべての非管理ページを提供します。また、ページの一部を置き換えるだけではなく、AJAXを介してページ全体をロードしたいと思います。- AJAXフレームワーク は、さまざまなトリガーに基づいてAJAXに部分的なコンテンツをロードできます。しかし、URLベースのナビゲーションシステムを作成したいと考えています。

これが私が達成したいことです:

  • http://example.com/node/1http://example.com/#!/node/1 にリダイレクトします。そのため、検索エンジンは通常どおりノードにインデックスを付けることができます。
  • DrupalはURL(node/1)から文字列を読み取り、関連する文字列をjson形式でフェッチします。
  • 結果のデータをページに挿入し、既存のコンテンツを置き換えます。
  • 対応するページに表示されるブロックを更新します。
  • ブラウザのタイトルを更新します(オプション)。
  • パネルを操作する必要があります。

新しいモジュールを作成する場合、Drupalのどの関数やフレームワークを使用してこれを機能させることができますか?

ありがとう。

-カウスタフ

4
kaustavdm

そのための解決策も探しています。ユーザーが地域で表示されている魔女のコンテンツタイプを選択できるようにしたいと思います。

まず、リージョンごとに1つのブロックを作成し、内部に次のようなさまざまな関数を配置して、さまざまなコンテンツを取得します。

_node_view_multiple(array($node->nid => $node), $display_type); // To get a node.
module_invoke($module, 'block_view',$delta); // To get a block.
panels_mini_block_view($minipanel_name); // To get a mini panel.
_

ここで、ブロックのCSS IDを使用して、AJAXリンクを使用してそれらを更新しようとします。Drupalのすべてのリンクをオーバーライドする必要があると思いますmain/nojs /#div_region_id/[drupal-url](例:main/nojs/block-content/node/1)のようなものに_class="use-ajax"_を追加します。

リフレッシュとは何かの管理はajax_callback_response()にあります。

_$commands[] = ajax_command_html('#block-content', $output );
$page = array('#type' => 'ajax', '#commands' => $commands);
ajax_deliver($page);
_

コンテンツページ モジュールを使用する方法もあります。

1
jonathan