Drupal

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

5
WYSIWYGモジュールを含むカスタムckeditor.styles.jsファイル
WYSIWYGモジュールを使用してCKeditorの「フォントスタイル」ドロップダウンをカスタマイズしようとしていますが、wysiwygモジュールのプロファイルエディターでckeditor.styles.jsのパスを指定する方法がありません。 詳細については、この投稿を参照してください。そのファイルの場所を指定する方法があるはずです。

3
drupalのnode_save()関数を高速化するにはどうすればよいですか?
node_save()の非効率性に多くの問題を抱えています。しかし、ノードは私の問題を保存していますか?それが最終的に私が調べようとしていることです。 100,000回の繰り返しでループを作成しました。ノードオブジェクトが有効で正しく保存されるための最低限の条件を作成しました。ノードの保存コードは次のとおりです。 $node = new stdClass(); $node->type = "test_page"; node_object_prepare($node); $node->uid = 1; $node->title = $node_title; $node->status = 1; $node->language = LANGUAGE_NONE; if($node = node_submit($node)){ node_save($node); } 結果は次のとおりです。 それぞれnode_save()を使用して、100,000のノードが保存されました。完了するまで5196.22秒かかりました。それは19秒だけを節約します。 控えめに言っても、これは受け入れられません。特に、この人物が毎秒約1200の個別の挿入クエリを取得しており、この人物が毎秒25,000の挿入を取得している場合はなおさらです。 それで、ここで何が起こっているのですか?ボトルネックはどこですか?それはnode_save()関数であり、どのように設計されていますか? それは私のハードウェアでしょうか?私のハードウェアは開発サーバーで、私以外は誰もいません-Intelデュアルコア、3 GHz、16 GBのRAMを搭載したUbuntu 12.04。 ループの実行中の私のリソース使用量は次のとおりです。MySQL27%CPU、6M RAM。PHP 22%CPU 2M RAM。 私のmysql設定はperconaウィザードによって行われました。 Mysqlによると、CPU使用率が70%未満の場合、問題はディスクにバインドされているということです。確かに、私は工場のWD Caviar 7200 RPMしか実行していませんが、1秒あたり19以上の挿入が得られるはずです。 少し前に、1日に30,000ノードを節約することについて書きました。ただし、明確にするために、このノードは外力とは何の関係もありません。これは、node_save()への呼び出しの速度を上げる方法を学ぶための純粋なベンチマークです。 現実的には、node_saveを使用して毎分30,000項目をデータベースに取得する必要があります。ノードの保存がオプションでない場合、独自のdrupal api関数「node_batch_save()」またはINSERTクエリで一括挿入を実行するmysqlの機能を利用する何かを記述できるかどうか疑問に思います。これにアプローチする方法についての考え?
9 7  performance  nodes 

1
フルHTMLコンテンツの本文翻訳をブロックする
ブロックを作成し、本文フィールドにHTMLコンテンツを配置した後、次の理由でこのコンテンツを翻訳できません。 textgroupブロックの文字列blocks:block:1:bodyは、そのテキスト形式のため、翻訳が許可されていません。 プレーンテキストに変更すると、ブロックを翻訳できますが、表示中はプレーンテキストとして扱われます。同じHTMLコンテンツ(翻訳済み)で別のブロックを作成し、特定の言語でのみ表示するように選択する必要がありますか?
9 7  blocks  i18n-l10n 

5
フィールドコレクションを適切に削除する方法
Drupalバージョン:7.21 フィールドコレクションモジュールバージョン:7.x-1.0-beta5 簡単な説明:フィールドコレクションをプログラムでインポートするのに忙しいのですが、それらの一部を削除すると、常にいくつかの「偽の」フィールドコレクションが残っています。 長い説明:ユーザーのプロファイルにフィールドコレクションフィールドがあります。このフィールドコレクションには、3つのテキストフィールドが含まれています。カスタムSQLデータベースからユーザーのフィールドコレクションにデータをインポートしたい。このフィールドコレクションは複数の値を持つことができます。初めてデータをインポートすると、すべてが正常に機能し、フィールドコレクションのフィールドにデータが表示されます。すごい。 しかし、ここでトリッキーな部分があります。たとえば、特定のユーザーに対して、カスタムデータベースから5行をインポートするとします。それらはフィールドコレクションに追加されるため、このフィールドコレクションにはそれぞれ3つのフィールドを含む5つのアイテムがあります。次に、カスタムデータベースからいくつかの行を削除して、このユーザーの残りの行が3行だけになるようにします。インポートを再度実行して、フィールドコレクションの最初の3つのアイテムを更新しますが、前回のインポートの2つのアイテムが残ります。インポートされた行は3つだけですが、フィールドコレクションアイテムが5つあるため、削除する必要があります。 そのため、これらのフィールドコレクションアイテムを削除しようとしましたが、常に1つ以上のアイテムが残っています。ユーザープロファイルを見るとフィールドは空ですが、まだ何かがあります。この時点で、カスタムデータベースにユーザーの新しい行を5つ追加したとしましょう。このユーザーの行は合計で8行になります。次に、インポートを再度実行します。最初の3つのアイテムが更新されますが、4番目の行を追加しようとすると、4番目のフィールドコレクションアイテムからエンティティIDが取得され、更新が試行されますが失敗し、次のエラーが返されます。 Fatal error: Call to undefined method stdClass::save() 以下の各方法でフィールドコレクションアイテムを削除してみました。 // Method 1 entity_delete_multiple('field_collection_item', array($fc_id)); // Method 2 $field_collection_item = field_collection_item_load($fc_id); $field_collection_item->delete(); // Method 3 $field_collection_item = field_collection_item_load($fc_id); $field_collection_item->deleteRevision(); これは私の完全なコードです: function import_user_field_collection(&$user, $old_user_id) { // I do a query to get the rows I want to …
9 7  entities 

9
ビュー3は、公開されたフィルターをプログラムで削除します
いくつかのノードタイプがあり、それぞれが異なる分類用語の語彙を参照しています。カテゴリを表示するには、taxonomy_displayモジュールを使用します。 たとえば、キュ​​ーとビリヤードボールの2つのカテゴリがあります。 Cuesには、from、price to、woodタイプのフィルターがあります。ただし、ボールにはウッドタイプのフィルターはありません。 したがって、taxonomy_term tidがビリヤードボールの語彙を参照している場合は、ウッドタイプフィルターを削除する必要があります。 したがって、プログラムで多くの公開されたフィルターの1つを削除する必要があります。 function modulename_views_pre_view(&$view, &$display_id, &$args) { // Some custom logic wich field_info_instances checking ... $filter_field = 'filter_id'; // Removes from everywhere where i can find filter or filters properties unset($view->display[$view->current_display]->display_options['filters'][$filter_field]); unset($view->display[$view->current_display]->handler->options['filters'][$filter_field]); unset($view->display_handler->display->display_options['filters'][$filter_field]); unset($view->display_handler->options['filters'][$filter_field]); } フィルターフィールドは正常に削除されますが、phpの通知があります。 Notice: Undefined index: field_wood_reference_tid in function views_handler_filter_term_node_tid->exposed_validate() また、hook_pre_execute()でフィールドを削除しようとしていますが、同じ結果が得られます。 function …
9 7  views 

2
Drushの同時実行機能の使用方法
Drupalのマルチサイト(単一のコードベース、複数のサイト/ *)を使用しています。これに加えて、Drushエイリアスを使用してそれらを管理し始めました。 $ cat sites/all/drush/aliases.drushrc.php <?php $aliases['localdev'] = array( 'site-list' => array( 'site1', 'site2', 'site3', ), ); ?> これにより、すべてのサイトでアクションを簡単に実行できます。 $ drush @localdev cc all >> また、@ sitesだけを使用して、drushrcファイルを無視できることもわかりました。 これを行うと、私のサイトのそれぞれで(一度に1つずつ) "cc all"が実行されます。 私は次のレベルにこれを取ると、すべてのサイト上でこれらのコマンドを実行してみたいと思いsimulantiously。私はいくつかの読書をしており、Drush は 確かにこれをサポートしているという印象を受けています。drush_invoke_process()関数は、(関数のドキュメントから)を含めることができます$ backend_optionsを、取ります。 * 'invoke-multiple' * If $site_alias_record represents a single site, then 'invoke-multiple' * will cause the _same_ …


1
本文フィールドの言語がノードと同じ言語で保存されないのはなぜですか?
ユーザーが新しいノードを作成して本文を入力しているときに、ノードをその言語に対して「ニュートラル」に設定するという問題があります。しかし、ノードを保存すると、本文フィールドの言語は英語に設定されます。なぜこれが起こっているのでしょうか?何が原因でしょうか? このサイトでは、英語とフランス語の両方を有効にして構成しています。このサイトはi18nを実行しているD7です。 これは、ノード編集ページの空のボディに似ていますが、フィールドが最初のノードとは異なる言語を取得する方法を知りたい点が異なります。

2
週番号でフィルタリングする方法はありますか?
Drupal 7、ビュー3 長年にわたってデータを表示するように構成されたビューがいくつかあります。データは、日付フィールドをフィルター基準として使用して、年によってフィルターされます。毎年、添付ファイルのビューがあり、週ごとにさらにフィルタリングする必要があります。毎年の週の正確な日付を決定し、それらをフィルター基準として手動で入力するのではなく、週番号、つまり第1週から第52週でフィルターするフィルター基準を追加する方法があるかどうか疑問に思っています。設定が必要な日付のみが各ビューの年であり、残りは週番号に従って自動的に発生します。 各列が追加のビュー添付ファイルであるテーブルビューで、年と週ごとに多くのデータを集計しており、年ごとの週の日付のフィルターを手動で入力する必要がないようにしています。 これについて私にアドバイス/ヒントはありますか?どうもありがとう。 これが私が現在遊んでいるコードです: function x_week_start($date) { $ts = strtotime($date); $start = (date('w', $ts) == 0) ? $ts : strtotime('last sunday', $ts); return date('Y-m-d', $start); } function x_week_end($date) { $ts = strtotime($date); $start = (date('w', $ts) == 0) ? $ts : strtotime('last sunday', $ts); return date('Y-m-d', strtotime('next saturday', …
9 7  views 

3
Drupal 7 Captcha(すべてのWebフォームまたはコンテンツタイプごとのWebフォーム)
私はD7にいます。 Webフォームが有効になっているコンテンツタイプがあります。 要件 このコンテンツタイプのノードのすべてのWebフォームにキャプチャを実装する必要があります。 問題 D7では、フォームにキャプチャを取得するために設定ページでform_idを指定することになっていますが、私はすべての異なるform_idを持つフォームをロードします。 Captchaモジュールを使用しています。 私の要件を実装する方法はありますか?
9 7  webforms  captcha 

4
Drupalフォームの送信後に結果を印刷するにはどうすればよいですか?
テキストボックスが1つあるシンプルなDrupalモジュールの設定があります。 私はテキストボックスに入力されたものを返すことができますdrupal_set_message(): function firstmodule_form1_submit($form, &$form_state) { drupal_set_message(t("The user is $username")); } しかしecho $username;、私にはうまくいきません、何も印刷されません。使用せずに結果を返すにはどうすればよいdrupal_set_message()ですか?
9 forms 

1
drush makeでcomposerパッケージをインストールするにはどうすればよいですか?
どのようにして、drush makeファイルにcomposerパッケージを含めますか? より一般的な答えが良いです。drush dlがcomposerパッケージを処理できるようにするcomposer drushモジュールはすでにありますが、すべての依存関係にシェルコマンドが必要です。 Symfony、composer、およびその他のSymfonyバンドルを将来使用することを考えると、将来、より重要になる可能性があります。

5
保存ノードで強制的に画像スタイルを生成
私はまだここに説明されている私の問題を抱えています画像スタイル、フィールドコレクションアイテムで画像を再利用しますが、解決策を得るために諦めました。 私の頭に浮かんだ回避策は、nodesaveでimagestylesの生成を強制することです。そうする可能性はありますか?
9 7  media  entities 

2
匿名ユーザーへのアクセスを制限してメニュー項目を表示する
コンテンツへのアクセスを設定するためにプライベートモジュールを使用するWebサイトがあります。もちろん、一部のページにはメニュー項目があります。ページを非公開に設定すると、適切な権限を持つユーザーだけがそれを見ることができます。これは素晴らしいことであり、私が望んでいたことです。 しかし、メニュー項目に少し問題があります。それらに割り当てられたコンテンツが公開されていない場合(つまり、それらに割り当てられたページが非公開である場合)、それらは消えます。これは問題ありませんが、引き続きそれらの項目を表示できるようにしたいと思いますナビゲーションで、ユーザーがそれらをクリックすると、ログインページが表示され、特定のページを表示するために詳細を入力するよう求められます。 したがって、基本的にはメニュー項目の動作を変更して、Webサイトの匿名および登録済みメンバーに常に表示されるようにしますが、それらをクリックすると、ページが表示されます(ログインしている場合) in)またはログインページにリダイレクトされる(匿名の場合) このような解決策を見つけました。そのようなページがたくさんあるので、私には最適な解決策ではないので、より良いアプローチを探しています。メニュー項目の可視性モジュールも試してみましたが、それも役に立ちませんでした! どうすればこれを達成できますか? ルカ
9 7  routes  users 

2
コマース製品の価格に等しいユーザーポイントを付与するにはどうすればよいですか?
商品販売後の商品代金をユーザーに付与したい。 このために、私は以下のようにルールを定義しました: イベント:チェックアウトプロセスの完了 アクション:ループ(commerce-order:commerce-line-items) そして、私は以下のようにルールコンポーネントを定義しました: 条件:エンティティのフィールドがあります(エンティティ:commerce-line-item、フィールド:commerce_product) アクション:グラントは、ユーザーへのポイント:(ユーザー:commerce-line-item:commerce-product:creator、ポイント:commerce-line-item:commerce-product:commerce-price:amount) しかし、コンポーネントを保存すると、次のエラーメッセージが生成されます。 データポイントcommerce-line-item:commerce-product:commerce-price:amount for parameter points is invalid。 どうすればできますか?

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