タグ Drupal 7 の記事

Drupal 7 から WordPress への移行方法

今回は Drupal 7 から WordPress への移行方法についてまとめたのでそのことを書きます。 なぜ Drupal 7 から WordPress に? Drupa 7 は 2021 年の 11 月に 公式のメンテナンスが終了することが決定しています(追記: その後 1…

脱 Drupal 7 の進め方

Drupal 7 から他のプラットフォームに移行する方法についてまとめました。 Drupal 7 は公式のメンテナンスが 2021 年 11 月に終了することが決定したため、 2020 〜 2022 年の間に脱 Drupal 7 を必要とするサイトがたくさん出てくるものと思いま…

How to set field default values programatically in Drupal 7

I'd like to share a way to set default values of fields to new nodes (more generally "entities") programatically in Drupal 7. At the time w…

Drupal サイトでモジュール一覧を csv で取得する方法

今回も Drupal の開発ネタで、掲題のとおり「 Drupal サイトで利用されているモジュールの一覧を csv として取得する方法 」についてです。 個人的には、サイトの引き継ぎのときや、モジュールのアップデートをまとめてかけたいときに、モジュール一覧をスプレッドシートで管…

Drupal のモジュール構成パターンあれこれ

今回は CMS の Drupal を使った開発に関する少しマニアックなお話です。 Drupal を使ったサイト制作において「カスタムモジュールをどのように分割するか」というのはそのサイトの中長期のメンテナンス性に影響する重要なポイントです。 一般に、 Drupal 上で A と…

Libraries included in Drupal 7 core

There're many JavaScript libraries included in the Drupal 7 core. Many of them are rarely used in custom modules (I haven't used many of th…

How to use EntityFieldQuery's entityCondition() in Drupal 7

Drupal 7 has a powerful query class in its core. EntityFieldQuery | entity.inc | Drupal 7.x | Drupal API There're 3 main methods to specif…

Using OOP styles for Drupal 7: callbacks

Drupal 7 was created mainly with a procedural style but OOP styles can be used in many parts of it. For example, there're many callbacks us…

A Bash function to check Drupal database sizes

At times I'd like to check the size of databases used by Drupal. But I don't like to launch apps like phpMyAdmin and Sequel Pro only for th…

Drupal 7: How to disable a content type

While developing a site with Drupal, at times I'd like to disable a content type without removing it. I just want to disable one. The datab…

Drupal 7 で theme.inc で発生する Fatal error の対処方法

Drupal 7 で次のようなエラーに遭遇することがあります。 原因 問題の原因は関数 の中で連想配列とその他の何か(たいてい )の加算が行なわれていることです。 そしてそれが起こるのは の戻り値が正しく指定されていないことが原因です。 次のような を書いていると発生し…

Drupal 7 の .info ファイルの files[] とは

今回は Drupal 7 の ファイルの についてのお話です( Drupal に興味のない方にはおもしろくないちょっとマニアックなお話です・・・)。 Drupal で開発を行う際に必ず必要となるもののひとつが .info ファイルです。 その中に記述可能な項目のひとつに …

Drupal 7 の DrupalWebTestCase のメソッドまとめ

Drupal 7 には仮想ブラウザを使った自動テストを行うための というテストクラスがデフォルトで用意されています。 ただ、 には驚くほどたくさんの便利機能が備わってはいるのですが、主に利用するのがコアコントリビュータだけだからなのか、英語で検索してもわかりやすく解説してい…

Drupal 7 で Database クラスが見つからないエラーの対処方法

Drupal 7 で Drush コマンドを実行しようとすると クラスが存在しないというエラーが出る場合の対処方法についてです。 問題 Drupal 7 で Drush コマンドを実行しようとすると クラスが存在しないと怒られます。 原因と解決策 このエラーは(私の環境では…

Drupal 7 で hook_boot() と hook_init() と hook_preprocess_html() の特徴と使いどころ

今回も Drupal 7 のマニアックなお話です。 今回は「すべてのページリクエストに対してある処理を行いたい場合、どの関数を使うべきか」の判断ポイントについてまとめてみたいと思います。 Drupal 7 では、原則すべてのページリクエストにおいて実行される関数として次の 3 …

Drupal 7 で drush pm-update コマンドが失敗するときの対処方法

問題 Drupal 7 で (もしくは )コマンドを実行すると下記のようなエラーが出て処理が失敗してしまいます。 原因 この問題の原因は「モジュールの更新情報の文字列を がうまく認識できないこと」にあります。 細かい原因まで把握できていませんが、テーブル状で表示されるモジ…

Drupal 7 でファイルアップロード後にノードを保存しなかった場合のファイルのゆくえ

Drupal 7 でノードのファイルフィールドからファイルをアップロードした後ノードを保存せず破棄した場合にアップロードしたファイルがその後どうなるかについてです。 結論は、一定時間経過すると cron で自動的に削除されます。 流れ: アップロードされたとき、ファイルは一時デ…

Drupal 7 の EntityFieldQuery でオリジナルの条件指定メソッドを利用する方法

今回は Drupal 7 の開発のマニアックなお話です。 Drupal 7 で開発を行っていると EntityFieldQuery でオリジナルの条件指定メソッドを作成したくなることがあります。 オリジナルの条件を指定するには基本的には メソッドを利用すれば OK です。 た…

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

Drupal でモジュールの cron 処理の順序を指定する方法について。 Drupal のモジュールの hook の実行順序はデフォルトではアルファベット順ですが、 を変更することで任意の順序で処理を実行する事が可能です。 次のコードでは、 というモジュールの処理を と…

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

エラー Drupal の Ajax API を使った処理を実装した際に次のようなエラーが出ました。 原因と解決方法 エラーメッセージに書かれているとおり のパラメータが間違っています。 こちらは 配列に追加した の キーの値が不正なことが原因です。 この場合は が間違…

Drupal 7 でインストール済みのモジュールを別ディレクトリに移動する方法

Drupal 7 でインストール済のモジュールを他のディレクトリに移動する方法について。 Drupal のモジュールの場所は DB のレコードに登録されるので、無理やり移動するとサイトが次のようなエラーを吐いて動かなくなることがあります。 解決方法は大きく 2 つあります。 モ…

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

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

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

今回は Drupal 7 で などデータベース関連の関数が発行するクエリを確認する方法について。 結論からいうと、 の戻り値である クラスのインスタンスのメソッドを利用すれば OK です。 同様のことは など他のデータベース関連関数についても言えます。 具体的には、 …

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

今回は Drupal 7 で一度無効化されたデフォルトのテキストフォーマットを再度有効化する方法についてご紹介したいと思います。 Drupal 7 を Standard プロファイルでセットアップした場合、次の 3 つのテキストフォーマットがデフォルトで有効になっています。 P…

Drupal 7 の Form API #states の使い方

手短な説明にはなりますが、 Drupal の Form API の #states というパラメータの使い方についてかんたんにご紹介したいと思います。 Drupal でフォームをプログラムで作成する場合は #states というパラメータを使うことにより、通常 JavaScri…

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

Drupal 7 で開発をしていると、次のようなメッセージで怒られることがあります。 今回はこの問題の原因と対策について。 原因と対策 原因は、エラーメッセージのとおり への引数が正しく渡されていないことです。 は Render array 、 theme 関数周りでよく使…

Drupal 7 で Drush が新しいアップデートを認識してくれない問題の解決方法

Drupal 開発を行う上で欠かせない Drush ですが、アップデートを行おうとしたときに思うように動いてくれないことがたまにあります。 そんなときの解決方法をいくつか書き留めておきます。 1. サブコマンド で Drush のリリース情報を更新することができます。 2.…

Drupal 7 で検索フォームを Font Awesome 風に変える方法

Drupal のデフォルトの検索フォームのボタンを Font Awesome のものにスタイル変更する方法について。 Drupal に Font Awesome を導入するには、「そのまま Font Awesome を自作のテーマに含めて使う方法」と「専用のコントリビュートモジ…

Drupal 7 の Webform の日付フィールドのフォーマットを変更する方法

Drupal 7 の Webform の日付フィールドはデフォルトでは「 月/日/年 」というフォーマットになっています。 これは日本では馴染みの薄いフォーマットなので、国内のプロジェクトで使用する場合は変更して使う形がほとんどになるかと思います。 明示的な説明がありませんが、…

Drupal 7 の Views で使用すべきテンプレートを特定する方法

Drupal 7 の Views で出力のテンプレートを変更したいことがあるかと思います。 そういう場合にはどこかのテンプレートを実装/上書きする必要があるということはパッとわかるのですが、具体的にどのテンプレートを利用すればよいのかにわかにはわかりません。 そういう場合には、…

Drupal 7 で DB にレコードを複数行まとめて入れる方法

タイトルのとおり Drupal でレコードを複数行まとめて入れる挿入する方法について。 こちら可能は可能なのですがちゃんと解説しているドキュメントがあまりないようでパッと確認したいときに不便します。メモ代わりに書いておきたいと思います。 おなじみ で生成した に対して を…

Drupal 7 で DB トランザクションを明示的にコミットする方法

Drupal 7 で DB トランザクションを明示的にコミットする方法について。 Drupal では使用している DB がトランザクションをサポートしている場合は 関数でトランザクションを開始することができます。そして、ロールバックや例外などが発生しないかぎり一連の処理が終了…

Composer で Drush を入れようとしたときのエラー

エラー文 原因 Composer のバージョンが古いために起こるエラーのようです。 私は Composer 0.9-dev で Drush 7.0 を入れようとしたときに発生し Drush を入れることができませんでした。 対処方法 Composer をアップデートします。 C…

Drupal 7 の Views で日付フィールドでフィルタリングする方法

Views で日付フィールドの値によってフィルタリングしたい場合があるかと思います。たとえば未来のお知らせだけを表示したい、直近 1 ヶ月のイベントだけを表示したい、など。 今回はそんな「 Drupal の日付フィールドでフィルタリングする方法」をご紹介します。 前提として、 …

Drupal 7 でテンプレートファイル内で使用できる変数をチェックする方法

Drupal のテンプレートファイルでは多数の変数が使用できるようになっていますが、テーマの継承などを行っていると使える変数が非常に多く「何が使えて何が使えないのかわからない」という状況になりがちです。 変数をチェックするにはテンプレートファイル内で以下のコードを記述するとよい…

さくらのレンタルサーバーで drush の自動補完がきかない問題の解決方法

さくらインターネットのレンタルサーバーで Drupal を使うときに起こる問題の解決方法についてです。 さくらで Drush をセットアップし自動補完用のスクリプトも読み込むようにしたのに、自動補完がきかないことがあります。 コマンドは使えるのに自動補完がきかない、そんな場合…

Drupal 7 で単一のノードを別の Drupal サイトにコピーする方法

Drupal で単一、あるいは小数のノードを特定の Drupal サイトから別の Drupal サイトに移動する方法について。 いくつか方法はあるかと思いますが、たとえば、ローカルの開発環境から本番環境へひとつだけのノードをサッと移すだけであれば Node export モジュ…

Drupal 7 でテーマのベーステーマが見つからないときのエラー

エラー Drupal で有効でデフォルトになっているテーマのベーステーマが存在しないときに以下のような警告文が表示されます。 厳密にはエラーではありませんが、そのまま放置していても正常な動作をするようにはならないので広義のエラーと言ってもよいでしょう。 対処方法 Drupal …

Drupal 7 で POST リクエストのデータが送信できない問題の解決方法

問題 Drupal 7 の HTTP リクエスト用の関数 を使って POST リクエストをしようとしても POST データが送れない。 原因 ヘッダが正しく設定されていないことが原因です。 と だけでなく header の を正しく設定する必要があります。 解決方法 以…

Drupal 7 でルートディレクトリを移動するとページが見れなくなるエラー

Drupal があるルートディレクトリを移動したりリネームしたりするとエラーが出てしまいページが見れなくなります。 エラー 私の環境では次のようなエラーが出ました。出てくるエラーは状況により変わることがあるようです。 原因 正確な原因は不明のままですが、キャッシュ周りが怪しそう…

Drupal 7 で cron を実行しようとすると「実行中です」と出て実行できないエラー

Drush を使って cron を実行しようとすると次のようなエラーが出てしまい実行できないことがあります。 原因 このエラーが起こるのは、 cron プロセスがすでに実行中のときか、実行中でなければ前回の cron 実行中に処理が途中で終了し関連データが残った場合に多いようで…

Drupal 7 で Features モジュールがアンインストールできないときの解決方法

Drupal 7 で Features モジュールをアンインストールしようとすると以下のエラーが出てアンインストールができない場合があります。 エラー 原因 原因は、アンインストールの処理内で Features モジュールの関数 が使われていることです。 アンインストールの処…

Drupal 7 でなるべく多くのエラーを画面に表示するための設定

に次の行を追加します。 すると、エラー発生時はなるべく画面に表示することができます。開発用なので本番サイトでは必ず削除するようにしましょう。ネタ元は Definitive guide to Drupal 7 です。

Drupal 7 でテーマの .info ファイルのスタイルシートの記述が間違っている場合のエラー

エラー 原因 / 対処方法 原因は有効にしているテーマの .info ファイル内のスタイルシートなどの設定が間違っていることです。よくあるのは次のまちがい。正の方に修正してキャッシュをクリアしたら直ります。 誤: 正: の部分には などを記入します。

Drupal 7 で翻訳ファイルディレクトリのパーミッションが適切でないときのエラー

エラー 原因 原因は翻訳ファイル・ディレクトリのパーミッションが書き込み可能でないこと。もしくは、テンポラリーディレクトリのパーミッションが書き込み可能でないこと。 対処方法 「環境設定」「ファイルシステム」の「パブリックファイルシステムパス」以下の languages ディレ…