Drupal

Drupal開発者および管理者向けのQ&A

1
約50のフィールドを持つノード追加フォームを高速化する方法は?
約50のフィールドを持つノード追加フォームがあり、ほとんどが1つのフィールドコレクション(別の5つのフィールドを持つ)を持つテキストと、いくつかのエンティティと用語参照があります。 ページの読み込みに約30秒かかり、使用できなくなります。 いくつかの遅いクエリがあります(99.28-DrupalDatabaseCache :: getMultiple、34.21-views_plugin_query_default :: execute、20.51-DrupalDefaultEntityController :: load、18.46-DrupalDatabaseCache :: getMultiple、17.46-DrupalDatabaseCache :: getMultiple .. Cache :: getMultipleクエリには1087のプレースホルダーがあり、EntityController :: loadには1084のプレースホルダーがあります。 完了までにさらに30秒かかるフィールドコレクションの[別のアイテムを追加]をクリックした場合。 ページの読み込み時間を短縮するにはどうすればよいですか? 編集:私はAPCをインストールしましたが、すべてのキャッシュクエリが削除されましたが、問題は解決しませんでした-まだ約30秒の読み込み時間です。遅いロード時間はキャッシングに関連しているとは思いません。約280MBのメモリロードを使用してページを構築しています。 編集:フィールドコレクションを削除し、memcacheとentitycacheをインストールすると、読み込み時間が20秒短縮されました。ただし、最初にページをロードするのに10秒かかり、ajaxリクエストごとにさらに10秒は許容されません。多数のフィールドでWebフォームはどのように機能しますか?多分それはより良いオプションでしょうか?

3
hook_module_implements_alter()でフックの実装を別のファイルに配置-悪い習慣?
私が書いたいくつかのモジュールでは、hook_module_implements_alter()を使用して* .moduleファイルを分割し、フックの実装を個別のファイルに移動しています。 主な理由は、長いファイルが嫌いだからです。(そして、はい、これは私がDrupal 7の多くのファイルについて不満に思って、貢献しています) 例: nestedbox_core_module_implements_alter() xautoload_module_implements_alter() 考慮すべきことがいくつかあります。 すべてのフックで機能しない場合があります。たとえば、bootまたはinstall、またはmodule_implements()経由で呼び出されないフック。 module_implements()の動作方法により、hook_module_implements_alter()実装内からそれぞれのファイルを含めることが重要です。 今、私は長い間、よく知られたDrupal開発者から、この方法には問題があると聞きました。https://drupal.org/node/2230319(トピックスターター、コメント#5および#11)。 機能の移動を始める前に、技術的にも審美的にも、これが悪いかどうか、なぜ悪いのかを他の人から聞きたいと思います。 編集:これは2つの質問に分けられると思います: * .moduleファイルを分割して、フック実装が別の場所に存在するようにするのは良いことですか、悪いことですか? hook_module_implements_alter()の信頼性は十分include_once __DIR__ . '/MYMODULE.filename.inc'ですか、それとも* .moduleファイルで直接使用する必要がありますか?このためにhook_module_implements_alter()を使用すると、何が問題になる可能性がありますか?
7 7  hooks 

2
カスタムの公開フィルターを作成するにはどうすればよいですか?
Drupal 7のビュー3でカスタム公開フィルターを作成しようとしています ビュー3とD7のカスタム公開フィルターを作成する方法についてどこで学ぶことができますか? 誰かが上のURLにコード例を入れましたが、それはビュー2にあるようです!?ビュー3で作成する方法を知っている人はいますか? モジュール内: /** * Implements hook_views_api(). */ function modulename_views_api() { return array( 'api' => 2, 'path' => drupal_get_path('module', 'modulename') . '/inc', ); } /** * Implementation of hook_views_handlers() to register all of the basic handlers * views uses. */ function modulename_views_handlers() { return array( 'info' => array( …
7 7  views 

2
ajaxコールバックが実行された後にフォームを再構築します
ボタンが付いたフォームがあり、これを押すとajaxリクエストを介してフォームの別の部分が再構築されます。 ボタンをクリックするとフォームが再構築され、フォームの値を保存してフォームの一部を返す私のajaxコールバックが呼び出されます。 問題は、値を保存するコールバックの前にフォームが再構築され、フォームの構築方法が変更されることです。 もう一度ajaxボタンをクリックすると、フォームがビルドされたときの前回のajaxリクエストの値と同じように正しく機能します。 フォームが再構築される前にコールバック関数を実行するにはどうすればよいですか? function emtr_shift_plan_form($form, &$form_state) { ddl('build'); // log that this function is being called $form['save'] = array( '#type' => 'button', '#submit' => array('emtr_shift_plan_form_ajax_submit'), '#value' => 'Save', '#ajax' => array( 'callback' => 'emtr_shift_plan_form_ajax_submit', 'wrapper' => 'postions', ), '#id' => 'ajax-save-form-values', ); $form['postions'] = array( '#type' => ' …
7 7  forms  ajax 

3
未定義のエラー:0またはautoload.phpをロードできません。DrushにComposerが必要になりました
私は/ usr / local / lib / drush / drushにdrushを、/ usr / local / bin / composerにcomposerをインストールしました。 drush / usr / local / lib / drush / drushを実行しようとすると、次のようになります。 / usr / local / lib / drush / drush:行129:/Applications/MAMP/bin/php/php5.2.17/bin:is a directory / usr / local / lib / drush / drush:line …
7 drush  composer 

2
要件が満たされていない場合、モジュールのインストールをキャンセルする方法
私のモジュールはPHPライブラリ(sites / all / libraries / xyz / xyz-library.php)に依存しています。drupalに、モジュールのライブラリ要件が満たされている場合にのみインストールを続行させたい。 私は私のようなものを望んでいmymodule.installます: function mymodule_install() { if( library_exists() ) return; //continue with installation else{ drupal_set_message(t('Installation failed. Please put xyz-library.php in sites/all/libraries/xyz folder.'), 'error'); return FALSE; // installation failed } }
7 7  installing 

1
entity_view関数は何をしますか?
ドキュメントを読んでコードを検索した後、entity_view関数の目的がよくわかりません。 ドキュメントは、エンティティコントローラのビュー機能にフォールバックして、定義された場合には、ビューコールバックを実行について説明します。EntityAPIControllerを使用しているので、そのビュー関数を使用したいので、以下のような同様の構造を追加します。 したがって、entity_viewはこのような構造(ページコールバックの一部)を置き換えることであると想定しました。 // Prepare the entities entity_prepare_view('entity_type', $entity_field_query_result); // Apply theme to all entities foreach($entity_field_query_result as $key => $item) { $entity->content = array(); $entity->content += array( '#theme' => 'my_entity_theme', '#element' => $item, '#view_mode' => 'full', '#language' => LANGUAGE_NONE, ); $render[$key] = $entity->content; } return $render; したがって、私はそれを $render = entity_view('entity_type', …


4
URLを介して公開されたフィルターに複数の値を使用する方法
現在のセットアップでは、サービスを通じてjsonを出力するビューを公開しています。 ビューは次のように呼び出すことができますhttp://domain.com/api/books.json。 また、参照コンテンツタイプ「作成者」にフィルターを公開しました。私はを使用していません。context filters通常のFiltersフィルターを使用していて、その特定のフィルターをユーザーに公開しています。これにより、フィルターに適切な引数名を付けることができますauthor_nid。 これで、これを呼び出すことができますhttp://domain.com/api/books.json?author_nid=38。そして、これはそのnidを持つ著者のすべての本を返します。 しかし、著者38と著者32の両方の本のリストを取得する方法がわかりません。 私が試したこと: http://domain.com/api/books.json?author_nid=38,32 http://domain.com/api/books.json?author_nid=38+32 http://domain.com/api/books.json?author_nid[]=38,32 http://domain.com/api/books.json?author_nid[]=38+32 http://domain.com/api/books.json?author_nid[0]=38&author_nid[1]=32 これは現在サポートされていないような気がします。私は正しいですか?もしそうなら、私の選択肢は何ですか?10〜15個のフィルターを公開するので、引数に名前を付けたいと思います(一部はオプション、その他は必須)。コンテキストフィルターを使用して、次のようにフィルター処理することargs[]=2&args[]=43,23&args[]=44は、あまり読みやすく/維持できません。
7 views  services 

2
「ステータスレポート」のパブリックファイルと一時ファイルのエラー
7.19から7.25にアップグレードしたばかりですが、ステータスレポートで「公開ファイル」と「一時ファイル」に赤いXが表示されています。 任意のコード実行から保護するためにsites / default / filesディレクトリに追加する必要がある推奨される.htaccessファイルについては、http://drupal.org/SA-CORE-2013-003を参照してください。 私は上記のアドレスに行きますが、これを修正するために何をすべきかについてのユーザーフレンドリーな説明はありません。前もって感謝します。 更新:(1/8/14) 以下の答えはPublic files問題を100%修正します。 これは修正されませんTemp files。一時ファイルを修正するにadmin/config/media/file-systemは、パスをから/tmpに変更します../tmp これが新しいバージョンのdrupalで修正された場合、または利用可能な別の修正がある場合は、これを更新します。これが../tmp正しい解決策かどうかはわかりませんが、うまくいきます。
7 7  files 

7
drushを実行しようとすると、「そのようなファイルやディレクトリはありません」
なぜDrushが突然機能しなくなったのかを理解するために、頭を壁にぶつけてきました。 私は作曲家を介して再インストールしました、異なるバージョンを試しました、いつも同じエラーです。 入力するwhich drushと、/home/user/.composer/vendor/bin/drushどちらが正しいかわかります。 私が入力した場合sh -vx drush、スクリプトで何が起こっているかデバッグする試みで、私は次のような出力が得られます。 #!/usr/bin/env sh # # This script is a simple wrapper that will run Drush with the most appropriate # php executable it can find. # # Solaris users: Add /usr/xpg4/bin to the head of your PATH # + : not found/.composer/vendor/bin/drush: 8: /home/user/.composer/vendor/bin/drush: …
7 drush 

4
CKEditor 4ライブラリがWysiwygモジュールによって検出されない
Wysiwygのインストール手順では、 アーカイブを抽出し、その内容を次の場所にある新しいフォルダーにコピーします。sites/ all / libraries / ckeditor したがって、実際のライブラリは次の場所にあります。sites/ all / libraries / ckeditor / ckeditor.js これらの2つの条件は満たされていますが、エディターの概要では、CKEditorは赤色になっています。何かがそこにあるように見えますが、それは正しくありません。何が悪いのでしょうか?どこでトラブルシューティングを行うべきですか?
7 7  wysiwyg  installing 

3
オーバーレイでのWebフォームの表示
ボタンをクリックすると、ユーザー定義のWebフォームがオーバーレイにポップアップ表示されます。colorboxおよびcolorbox-nodeモジュールを使用しています。ノード全体を表示できます。しかし、ノード全体ではなくWebフォームだけを表示する方法がわかりません。私は次のコードを使用しました: <a class="colorbox-load" href="enquiry?width=600&height=600&iframe=true"><input value="Send Enquiry" type="submit"> </a>

1
ファセットAPIおよびエンティティリファレンスのオートコンプリート
Drupal 7では、2つのコンテンツタイプがあります。 市 求人。「City」という名前のエンティティ参照CCKフィールドがあり、Cityタイプのノードエンティティを受け入れます。 私はまた、ファセットAPIを備えたapachesolrモジュールを使用しています。ユーザーが都市ごとにオファーをフィルターできるようにしたいと考えています。ただし、データベースには何千もの都市があるため、「リンク」ウィジェットは使用できません。 エンティティリファレンスモジュールのオートコンプリートウィジェット(またはhttps://drupal.org/project/entityreference_autocomplete、またはその他のウィジェット)をファセットAPI と簡単に統合するにはどうすればよい ですか?
7 entities  ajax  search 

2
Twig / Drupal 8でフィールドアイテムの属性を印刷する
Drupal 7では、カスタムフィールドテンプレートでこれを実行して、画像のaltタグを印刷できます。 <?php print $item['#item']['alt']; ?> また、「アイテム」はTwig / drupal 8フィールドの変数のようですが、同じことはできません。私はこれらを試しました: {{ item.alt }} {{ item.item.alt }} これらは動作しませんが、エラーも発生しません。APIを見ても、多くの洞察は得られません。私はこの要点を確認しましたが、個別にレンダリングされるaltタグはありません。私の画像はaltタグをレンダリングしていますが、コードで確認できます。
7 entities  8  theming 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.