Drupal 7

Drupal 7 で特定のモジュールの cron 処理が他のモジュールのものよりも後に実行されるようにする方法

Drupal でモジュールの cron 処理の順序を指定する方法について。

Drupal のモジュールの hook の実行順序はデフォルトではアルファベット順ですが、 weight を変更することで任意の順序で処理を実行する事が可能です。

次のコードでは、 mymodule というモジュールの処理を another_module という名前のモジュールよりも後に実行することを保証するための処理です。 次回の cron 実行からこの順序が反映される形になります。

Drupal の Ajax API で wrapper エラーが出た場合の対処方法

エラー

Drupal の Ajax API を使った処理を実装した際に次のようなエラーが出ました。

ajax.js
Uncaught TypeError: wrapper[method] is not a function

原因と解決方法

エラーメッセージに書かれているとおり method のパラメータが間違っています。 こちらは $form 配列に追加した #ajaxmethod キーの値が不正なことが原因です。

Drupal 7 の Views を date フィールドでうまくグルーピングできない問題の解決方法

Drupal 7 の Views でリストを作成していると、リストを date 型のフィールドでグルーピングしたくなる場合があります。 過去の投稿一覧を月単位でまとめたり、エンティティを日付の単位をまとめたり、といったケースです。

このような場合にグルーピングを使うと複数の項目が表面上は同じ「 2015 年」なのに別々にグルーピングされてしまうようなことが発生することがあります。

Drupal 7 で db_select() が発行するクエリ文を確認する方法

今回は Drupal 7 で db_select() などデータベース関連の関数が発行するクエリを確認する方法について。

結論からいうと、 db_select() の戻り値である SelectQuery クラスのインスタンスのメソッドを利用すれば OK です。 同様のことは db_update() db_delete() など他のデータベース関連関数についても言えます。

具体的には、 getArguments() でパラメータを、 __toString() でクエリ文を確認することができます。

Drupal 7 でいったん無効にしたデフォルトのテキストフォーマットを有効化する方法

今回は Drupal 7 で一度無効化されたデフォルトのテキストフォーマットを再度有効化する方法についてご紹介したいと思います。

Drupal 7 を Standard プロファイルでセットアップした場合、次の 3 つのテキストフォーマットがデフォルトで有効になっています。

  1. Plain text
  2. Filtered HTML
  3. Full HTML

これらのテキストフォーマットは使わない場合は無効化することができますが、いったん無効化すると管理画面上から確認できなくなるため、「やっぱり使おう」と後から思っても管理画面上から再有効化することができません。 幸い裏側では status が無効になっているだけでデータ自体は残っているため以下のコードで再有効化することができます。

Drupal 7 の Form API #states の使い方

手短な説明にはなりますが、 Drupal の Form API の #states というパラメータの使い方についてかんたんにご紹介したいと思います。

Drupal でフォームをプログラムで作成する場合は #states というパラメータを使うことにより、通常 JavaScript 側で記述しなくてはならないフィールドの状態変更を PHP 側で記述することができます。

たとえば

  • 特定のチェックボックスにチェックが入っているときだけフィールドを表示する
  • 特定のチェックボックスにチェックが入っていなければ送信ボタンを無効化する

といった「他のフィールドの状態に応じてフィールドの状態を設定する」ちょっとした設定が PHP 側だけで完結した形で記述できます。

Drupal 7 で Rules UI のインタフェースがうまく動作しない問題の解決方法

Drupal 7 で Rules UI モジュールを使っていると画面がうまく動作しなくなることがあります。 変数入力の自動補完の表示がおかしくなったり、利用可能な変数一覧を確認するためのリンクが効かなかったりします。

ブラウザの console を見ると次のようなメッセージが表示されていました。

TypeError: Cannot set property '_renderItem' of undefined

原因

調べてみたところこれは Rules UI と jQuery update モジュールを同時に使用しているときに発生する現象のようです。

Drupal 7 で drupal_attributes() の引数エラー

Drupal 7 で開発をしていると、次のようなメッセージで怒られることがあります。

Recoverable fatal error: Argument 1 passed to drupal_attributes() must be of the type array, null given, called in ...

今回はこの問題の原因と対策について。

ページ