Drupal7でJQueryを使おうとしたら、$ is not a functionとエラーが出て使えない
他のライブラリとバッティングするため、$の記法が使えないらしい。
Managing JavaScript in Drupal 7 | Drupal 7 guide on Drupal.org
やり方としては、
(function ($) {
と
})(jQuery);
で従来の$で始まるJQueryのソースを囲めばよい。
(function ($) { $(document).ready(function() { //これまでの処理 }); })(jQuery);
上記のように書くと、Drupal7でもこれまで使っていたJQueryを使用することができる。
Drupal 7でformを使用する (Drupal 6からの相違点)
Drupal7の環境でDrupal6で作ったフォームを使用すると、うまく行かない点がいくつか出てくる。
1. db_result()が使えない
関数そのものが無くなっているので、db_result()を使用しているところはすべて書き換え
2. クエリのプレースホルダーの書き方が違う
db_query( "SELECT * FROM {users} WHERE name = :name", array(':name' => $form_values['username']) );
のように、コロンを使う。PDOのスタイルに合わせてあるらしい
3. Insertの方法が違う
$vid = db_insert('<テーブル名>')->fields( array( '<フィールド名>' => <値>, ))->execute();
のように行う。従って、
$vid = db_insert('my_new_table')->fields( array( 'uid' => $uid, 'extra_field' => $extra_value, 'additional_field' => $additional_field, ))->execute();
のように行う。
ただし自前のモジュールでusersテーブルにuserを追加するには、
$edit = array(); $edit['name'] = $username; $edit['mail'] = $email; $edit['pass'] = $password; $edit['language'] = "ja"; $edit['status'] = 1; $account = user_save(null, $edit);
のようにuser_save()を使用する。
IE9でhoverが効かない
Internet Explorer 9でHTMLを表示したら、:hover属性で指定したCSSが無視されている。
これはIE9がDoctypeから、HTMLの互換性(世代)を判断しているからだと思われる。
そのため、HTMLの先頭行でこのように宣言すれば、hoverを始めとする世代の新しいCSSディレクティブも理解してくれるようだ。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
モダンなブラウザなら、デフォルトでは最新のCSSに合わせておいてもらわないと困るのだが。
Drupalで一部が文字化け
Drupalを使ったサイトで文字化けが発生。しかしコンテンツ作成とかからページを作る時にはちゃんと日本語を受け付けている。
その場合、Mysqlのテーブルの文字コード、あるいはテーブルのフィールドの文字コードに問題がある。
show create table