私はそのようにビューを埋め込んでいます:
function theme_module_name_element($element) {
$view = views_get_view('view_name');
$view->set_use_ajax(TRUE);
$output = $view->render();
return $output;
}
次に、ビューはfilefield sourcesモジュールによって表示されますが、検索しようとすると、ajaxは使用されません。これはjsがロードされていないことに関係していると思いますが、これを実行する方法がわかりません!
何か案は?
編集:これはこれに関連している可能性があります: http://drupal.org/node/386388
編集2:ページャーが機能し、それが使用されたときに検索が機能します...
編集3:ページャーが押されると(そしてすべてが正常に動作します)、フォームにhtmlが追加されるため、次のようになります。
(編集3の更新:推測しなければならない場合、filefield_sourcesソースが選択されているときにajaxViews.jsからの「Drupal.behaviors.ViewsAjaxView」が実行されていません。)
<div class="view-filters">
<div><div class="views-exposed-form">
<div class="views-exposed-widgets clear-block">
<div class="views-exposed-widget views-widget-filter-title">
<label for="edit-image-title">Search</label>
<div class="views-widget">
<div class="form-item" id="edit-image-title-wrapper">
<input type="text" maxlength="128" name="image-title" id="edit-image-title" size="30" value="" class="form-text">
</div>
</div>
</div>
<div class="views-exposed-widget views-submit-button">
<input type="submit" id="edit-submit-Filefield-Sources-Imagebrowser" value="Apply" class="form-submit">
</div>
</div>
</div>
</div>
</div>
に:
<div class="view-filters">
<form action="/" accept-charset="UTF-8" method="get" id="views-exposed-form-Filefield-Sources-Imagebrowser-default" class="views-processed">
<div><div class="views-exposed-form">
<div class="views-exposed-widgets clear-block">
<div class="views-exposed-widget views-widget-filter-title">
<label for="edit-image-title">Search</label>
<div class="views-widget">
<div class="form-item" id="edit-image-title-wrapper">
<input type="text" maxlength="128" name="image-title" id="edit-image-title" size="30" value="arnar" class="form-text">
</div>
</div>
</div>
<div class="views-exposed-widget views-submit-button">
<input type="submit" id="edit-submit-Filefield-Sources-Imagebrowser" value="Apply" class="form-submit">
</div>
</div>
</div>
</div>
<input type="hidden" name="view_name" value="Filefield_Sources_Imagebrowser">
<input type="hidden" name="view_display_id" value="default">
<input type="hidden" name="view_args" value="">
<input type="hidden" name="view_path" value="node/add/dagskrafaerslur">
<input type="hidden" name="view_base_path" value="null">
<input type="hidden" name="view_dom_id" value="655136b3027e2ef4608dfbaa7605db4c">
<input type="hidden" name="pager_element" value="0">
</form>
</div>
(フォームタグと入力要素の追加に注意してください。)
意味がわからない:「jsが適用されていません」
だからショットガンアプローチ...
HTMLソースで.jsファイルを確認します。
misc/ajax.js
sites/all/modules/views/js/ajax_view.js
views_add_js()はJavaScriptをロードするコマンドです。
http://api.drupal.org/api/views/views.module/function/views_add_js/7
Jsファイルが存在しない場合、ヘッダーのスクリプトセクションが更新されていない可能性があります。
$ vars ['scripts'] = drupal_get_js();
_Views Basic Setting
_でAjax
を有効にし、$view->set_use_ajax(TRUE);
を削除して確認します。
ページャーを使用すると、公開されたフィルターがAjaxの使用を開始するのと同じ経験で、まったく同じ問題が発生しました。私の場合は、コードがビューを別のフォーム内にレンダリングさせるためでした。ビューのコードが他のフォームの上にレンダリングされるように移動された場合、JSは適切に適用され、公開されたフォームはAjax送信を使用しました。 フォームは他のフォーム内では許可されない なので、これは理にかなっています。
ページで同様の問題を修正しました。あなたのリストから:
<input class="form-submit" type="submit" id="edit-submit-Filefield-Sources-Imagebrowser" value="Apply">
ここで欠落しているのは(そして私の場合も欠落していた)、自動送信コードを機能させるクラスです。私のコードから(修正後):
<input class="ctools-use-ajax ctools-auto-submit-click js-hide form-submit" type="submit" id="edit-submit-view-path" name="" value="Apply" />
クラスctools-use-ajax ctools-auto-submit-click js-hideを入力に適用するには、テーマを修正する必要がありました。ボタンのテーマがどこにあるか、クラスが削除されていないかどうかを確認します。入力の属性が元のDrupalテーマとは異なる順序でレンダリングされるため、これが原因である可能性があります。クイックフィックスについては、標準のDrupalインストールに付属する標準のテンプレートを使用できます。お役に立てば幸いです。