|
|
| 訂正箇所 |
改訂 刷数 |
内容 |
P.108
1つ目の網掛け
|
未定
|
| 誤 |
SELECT FROM role WHERE rid > 1 and rid != 7
|
| 正 |
SELECT name FROM role WHERE rid > 1 and rid != 7
|
|
P.150
網掛けコードブロック
|
未定
|
| 誤 |
// セッションを書き、タイムスタンプを更新し、userフックの'login'を実行する
user_authenticate_finalize($form_state['values']);
|
| 正 |
// セッションを書き、タイムスタンプを更新し、userフックの'login'を実行する
user_authenticate_finalize($form_values);
|
引数名に誤りがありました。
|
|
P.164
図7-2以下
|
未定
|
| 誤 |
ダイレクトリンクを追加したくない場合は、hook_menu_alter()を使用して削除することができます。例えば次のコードは、「ノードの管理」 権限を持たないユーザからページを削除するコードです。
/**
* hook_menu_alter()の実装
*/
function joke_menu_alter(&$callbacks) {
// ユーザが「ノードの管理」権限を持たない場合、
// access callbackをFALSEに設定してjokeメニュー項目を無効にする
if (!user_access('administer nodes')) {
$callbacks['node/add/joke']['access callback'] = FALSE;
// デフォルトのアクセスコールバックとしてuser_access()を使用されないために、
// access argumentsを破棄する必要がある
unset($callbacks['node/add/joke']['access arguments']);
}
}
|
| 正 |
ダイレクトリンクを追加したくない場合は、hook_menu_link_alter()を使用して削除することができます。例えば次のコードは、「jokeの作成」ページへのダイレクトリンクを非表示にするコードです。
/**
* hook_menu_link_alter()の実装
*/
function joke_menu_link_alter(&$item, $menu) {
// 「jokeの作成」ページへのダイレクトリンクを非表示にする
if ($item['link_path'] == 'node/add/joke') {
$item['hidden'] = 1;
}
}
|
hook_menu_alter()はコールされる条件が特殊であり、Drupalリクエストのライフサイクルで必ずコールされるものではないため、例に挙げられているコードは意図したとおりに動作しません。
また、この段階ではモジュールにパーミッションが定義されていないため、パーミッションを用いた例は適当ではありません。
なお、この修正に伴い、セクションのタイトルも「menuコールバックの変更」から「ダイレクトリンクの削除」に変更となります。
|
|
P.210
「$secondary_links」項目のコードブロック内3行目
|
未定
|
| 誤 |
'links primary-links'))
|
| 正 |
'links secondary-links'))
|
設定すべきクラス名に誤りがありました。
|
|
P.249
図10-1内
|
未定
|
| 誤 |
hook_form_id_alter()
|
| 正 |
hook_form_FORM_ID_alter()
|
関数名に誤りがありました。
|
|
P.263
網掛けコードブロック
|
未定
|
| 誤 |
function formexample_nameform_submit($form_id, $form_state) {
|
| 正 |
function formexample_nameform_submit($form_id, &$form_state) {
|
2番目の引数の & が抜けています。
|
|
P.264
2番目の網掛けコードブロック
|
未定
|
| 誤 |
function formexample_nameform_submit($form_id, $form_state) {
|
| 正 |
function formexample_nameform_submit($form_id, &$form_state) {
|
2番目の引数の & が抜けています。
|
|
P.329
網掛けコードブロック内下部
|
未定
|
| 誤 |
/**
* hook_search_page()の実装
*/
function pathfinder_search_page($rows) {
$header = array(
array('data' => t('Alias'), 'field' => 'dst'), ('Operations'));
|
| 正 |
/**
* hook_search_page()の実装
*/
function pathfinder_search_page($rows) {
$header = array(
array('data' => t('Alias'), 'field' => 'dst'), t('Operations'));
|
t('Operations') の t が抜けています。
|
|
P.37
上から5~6行目
|
未定
|
| 誤 |
variable_set($key, $value)を使用することでそれを取得することができます。
|
| 正 |
variable_get($key, $value)を使用することでそれを取得することができます。
|
関数名に誤りがありました。
|
|
P.375
コードブロック内の6行目
|
未定
|
| 誤 |
if (empty($vid) || is_null(taxonomy_vocabulary_load($vid))) {
|
| 正 |
if (empty($vid) || (taxonomy_vocabulary_load($vid) === FALSE)) {
|
taxonomy_vocabulary_load() は、ボキャブラリが存在しない場合に NULL ではなく FALSE を返します。
|
|
P.392
14~15行目
|
未定
|
| 誤 |
CACHE_ERMANENTでマーク付けされたアイテムは、キャッシュから削除されません
|
| 正 |
CACHE_PERMANENTでマーク付けされたアイテムは、キャッシュから削除されません
|
CACHE_PERMANENT の P が抜けていました。
|
|
P.449
3番目のコードブロック内11行目
|
未定
|
| 誤 |
if ($is_author) {
// ユーザが投稿者自身の場合は投票を許可しない
|
| 正 |
if ($is_author || !user_access('rate content')) {
// ユーザが投稿者自身、または「rate content」権限を持たない場合は投票を許可しない
|
投票権限を持たないユーザに対する処理が抜けていました。
|
|
P.83
最下部の網掛けコードブロック
|
未定
|
| 誤 |
function menufun_title() {
drupal_set_title(t('The page title'));
$now = format_date(time());
return t('It is now @time', array('@time' => $now));
}
|
| 正 |
function menufun_hello() {
drupal_set_title(t('The page title'));
return t('Hello!');
}
|
タイトルコールバック関数内でページタイトルを変更した場合、当該メニュー項目が表示されるすべてのページのページタイトルが変更されてしまいます。
したがって、83ページで説明しているように、特定のメニュー項目のタイトルとそのメニュー項目が指すページのタイトルを別々に設定したい場合は、メニューコールバック関数内で変更するのが妥当です。
|
|
|
ページ上に戻る
|