web-dev-qa-db-ja.com

露出ビューのAjaxフィルターが機能しない

私はそのようにビューを埋め込んでいます:

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>

(フォームタグと入力要素の追加に注意してください。)

5
Karl Jóhann

意味がわからない:「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();

差出人: http://drupal.org/node/386388#comment-3176034

2
jhr

_Views Basic Setting_でAjaxを有効にし、$view->set_use_ajax(TRUE);を削除して確認します。

2
Sumit Madan

ページャーを使用すると、公開されたフィルターがAjaxの使用を開始するのと同じ経験で、まったく同じ問題が発生しました。私の場合は、コードがビューを別のフォーム内にレンダリングさせるためでした。ビューのコードが他のフォームの上にレンダリングされるように移動された場合、JSは適切に適用され、公開されたフォームはAjax送信を使用しました。 フォームは他のフォーム内では許可されない なので、これは理にかなっています。

0
lolcode

ページで同様の問題を修正しました。あなたのリストから:

<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インストールに付属する標準のテンプレートを使用できます。お役に立てば幸いです。

0
Piohen