Drupalに新しいAjaxされたコンテンツにDrupalの動作を強制する[Drupal.attachBehaviors()のみが正しく機能していない]
私はこのトピックについてdrupal.orgに多くの投稿をしていましたが、残念ながら間違ったコンテキストでした。 Ajaxされたコンテンツが必要なJSとCSSを添付していない(フォーラム) Ajaxされたコンテンツが必要なJSおよびCSSを添付していない(問題) それは問題ではないと思うので、別の方法で試してみます。おそらくこれが解決策になるかもしれません。PHPページ全体をロードしてajaxで特定のdivを抽出しても、正しく機能しませんでした。だから、私はdrupalにコンテンツだけをロードさせて、それをajaxでdivに注入できると思いました。リクエストされたURLで「ajax = 1」を探しているhook_preprocess_pageとhook_preprocess_nodeを使用してクエリを作成し、ページ全体ではなくコンテンツのみを提供しました。そして今、特定のtpl.phpファイルの助けを借りて、理論的には、drupalの出力を$ contentのみに制限することができました。そしてここに問題があります。tpl.phpファイルを元の方法のままにしても、私のアプローチは機能していますが、node-ajax.tpl.phpから「$ content」を削除しています。「正しく動作する」とは、drupalがページ全体をリロードしないことを意味します。しかしもちろんコンテンツではありません。しかし、私はそれを自分自身に説明することはできません。$ content変数で発生するため、生成されたコンテンツのhtmlのみであると思いました。だから私の質問は、drupalの出力をコンテンツだけに制限するにはどうすればよいですか、またはこれを機能させるために間違った手順を実行していますか?これが私が使用しているモジュールとjsファイルです:my_ajax.module: <?php function my_ajax_init() { drupal_add_js(drupal_get_path('module', 'my_ajax') . '/my_ajax.js'); } function my_ajax_preprocess_page(&$vars, $hook) { if (isset($_GET['ajax']) && $_GET['ajax'] == 1) { $vars['template_file'] = 'page-ajax'; } } function my_ajax_preprocess_node(&$vars, $hook) { if (isset($_GET['ajax']) && $_GET['ajax'] == 1) { $vars['template_file'] = 'node-ajax'; } } …