本日は Drupal 7 コアで定義されている関数群の中から「ノード」周辺の関数をピックアップしてご紹介したいと思います。
・・・といっても、ご紹介するひとつひとつの説明はごくかんたんなものです。 関数の詳細が気になった方には本家 drupal.org のリファレンスをご参照いただくことにして、今回は「こんな関数があるよ」というのをご紹介することをメインにざーっと書いてみます。
想定読者
本記事の想定読者は次の方です。
- Drupal を使ってサイト開発をしている方
「最近 Drupal の開発をはじめたぞ」という方にも、長年 Drupal 開発を行っている方にも。 ノードの取り扱いはある程度踏み込んだ開発を行うには必須とも言える部分ですので、どちらの方にも何かしら得られるものがあるのかな(あればいいな)と思います。 開発者の方はぜひ最後までご覧くださいませ。
Drupal 7 のコア関数
Drupal 7 のコアには、呆れるぐらいの数の関数が含まれています。 有効/無効の切り替えが可能な「コアモジュール」の分も含めて数えると、おおよそ 4,000 個を越える数の関数がコアの中で定義されています。
実際のリストはこちらのページからご確認いただくことが可能です。
このリストには「プライベート」的な位置づけの関数も多く含まれていますが、その分を差し引いても、ひとつずつ見ていくとキリがないぐらいの数の関数( API )があることがわかります。 ですのでコアの関数については「ひとつずつ見ていってすべてを網羅しよう」という学び方はあまり効率的ではありません。 「必要に応じて都度調べて都度覚えていく」というのがコアの関数を学んでいく正しい姿勢かと思います。
とはいえ。 中には「早いうちから知っておくと便利なユーティリティ関数」などもあり、それらの多くは「必要に応じて学ぶ」という姿勢ではなかなか出会わないものです。 ですので、必要に駆られて学ぶだけではなく、開発の前に先んじて「まとめて学習する」というのもある程度は効果的かと思います。
今回はそんな「ある程度まとめて学習する」というところを想定して、 Drupal のコア関数の中からノードの周りの API のみをピックアップして集めてみました。
ノード関連 API 一覧
ということで、以下にノード関連の API 関数をリストアップしています。 関数の選定基準は次のとおりです。
- 母集団は Drupal 7 に同梱されている Node (
node
) モジュール内の関数 - フック実装やページコールバック、アクションコールバックといった特別な意味合いを持つ関数は除外
_
始まりのプライベート的な位置づけの関数も除外
その他私の判断でリストに含めたもの、リストから外したものも一部あります。
以下がリストです。 私が「これは重要!」と個人的に思う関数は太字で強調表示しているので、よろしければそのあたりも参考にしてみてください。
関数名 | 説明 |
---|---|
node_access() |
カレントユーザがノードに対して特定の操作ができるかどうかをチェックする。 |
node_access_acquire_grants() |
ノードアクセスグランツのリスト( hook_node_access_records() の内容)を取得しデータベースを更新または追加する。 |
node_access_grants() |
特定のユーザ ID に対して許可されたパーミッション ID の配列を取得する。 |
node_access_needs_rebuild() |
ノードアクセスグランツのリビルドの必要性のフラグを立てる/下げる。 |
node_access_rebuild() |
ノードアクセスデータベースをリビルドする。 |
node_access_view_all_nodes() |
ユーザがすべてのノードに対するグローバルの閲覧グランツを持っているかどうかをチェックする。 |
node_access_write_grants() |
グランツのリストをデータベースに書き込む。以前のものは上書きする。 |
node_delete() |
指定されたノードを 1 件削除する。 |
node_delete_multiple() |
指定されたノードを複数件削除する。 |
node_feed() |
指定されたノードに対する RSS フィードを生成して返す。 |
node_get_recent() |
カレントユーザがアクセスできるノードのうち最も最近に更新されたものを指定された件数取得する。 |
node_hook() |
ノードフックが存在するかどうかをチェックする。 |
node_invoke() |
指定されたノードフックを実行する。 |
node_is_page() |
現在のページが指定されたノードのフルページビューかどうかをチェックする。 |
node_last_changed() |
指定されたノードの最終更新日時のタイムスタンプを取得する。 |
node_last_viewed() |
指定されたノードをカレントユーザが最後に閲覧した日時のタイムスタンプを取得する。 |
node_load() |
ノードオブジェクトをデータベースから 1 件読み込む。 |
node_load_multiple() |
ノードオブジェクトをデータベースから複数件読み込む。 |
node_mass_update() |
ノードの一括アップデートを行う(バッチ API を使用)。 |
node_object_prepare() |
編集用のノードデータを準備する。デフォルト値をセットしたりフックを実行したりする。 |
node_revision_delete() |
特定のノードのリビジョンを削除する。 |
node_revision_list() |
特定のノードに対するリビジョンをすべて取得する。 |
node_save() |
ノードを保存する。新規作成と更新の両方が可能。 |
node_show() |
ノードの詳細ページのためのレンダーアレイを生成する。 history テーブルの更新も行う。 |
node_submit() |
ノードの保存前の処理を行う。作成者と作成日時の情報をセットする。 |
node_tag_new() |
history テーブルの該当レコードの更新を行う。 |
node_title_list() |
リスト生成のためにノードのリンク付きタイトルの一覧を取得する。 |
node_types_rebuild() |
ノードタイプの情報をリビルドする。 |
node_type_cache_reset() |
ノードタイプのキャッシュをクリアする。 |
node_type_delete() |
ノードタイプをデータベースから削除する。 |
node_type_get_base() |
特定のノードのノードタイプベースを取得する。 |
node_type_get_name() |
特定のノードのノードタイプ名を取得する。 |
node_type_get_names() |
ノードタイプの名前を全件取得する。 |
node_type_get_type() |
特定のノードのノードタイプを取得する。 |
node_type_get_types() |
ノードタイプを全件取得する。 |
node_type_load() |
パスパラメータコンバータ: ノードタイプを取得する。 |
node_type_reset() |
モジュールによって定義されたノードタイプの設定値をデフォルトに戻す。 |
node_type_save() |
ノードタイプをデータベースに保存する。 |
node_type_update_nodes() |
特定のノードタイプのすべてのノードを別のノードタイプに変更する。 |
node_view() |
指定されたノードに対してレンダーアレイを構築する。 |
node_view_multiple() |
指定されたノードの集合に対してレンダーアレイを構築する。 |
以上です。
このリストを見て「知っているものばっかりだなぁ」と感じる方もいらっしゃれば、「そんなものがあったのか!」と発見のある方もいらっしゃるのではないかと思います。 いずれにせよ、これらのコア関数は、単にカスタムコード内で呼び出すためだけでなく、処理の参考にするという意味でもある程度は押さえておくと便利です。 ある程度頭に入れておくと、実際の開発時に「今から書こうとしているこの処理、確かコアのどこかにあったなぁ・・・」と思い出すことが(運がよければ)できます。
コア関数を必要に駆られて調べるだけではなかなか出会えないものもありますので、興味をひくものがあれば上掲の drupal.org の一覧ページからぜひ検索してみてください。
...
最近は開発者の方向けの記事ばかり書いてしまっているので、サイト管理者の方やウェブ担当者の方に役立つ記事も近々書きたいと思います。
募集しています
スタジオ・ウミは「Drupal」に特化したサービスを提供する Drupal のエキスパートチーム。
フルリモート&フレックス制だから、働く場所を選ばず時間の使い方も自由です。
そんなワークライフバランスの整った環境で、当ブログに書かれているような
様々な技術を共に学びながら、Drupalサイト開発に携わってみたい方を募集しています。
まずはお話だけでも大歓迎!ぜひお気軽にご連絡ください。