Tips

プログラムからノードの特定のフィールドだけを修正/更新したいとき、このようなコードを考えるかもしれません。

$node = node_load($nid);
$node->field_fieldname[LANGUAGE_NONE][0]['value'] = '更新したフィールドの値';
node_save($node);

node_load() でいったん変更したいノードの完全なデータを読み込み、修正/変更したいフィールドを操作して、node_save() で保存する。

「しかしこれでは無駄が多い」と感じてしまいますね。まず変更する必要のないフィールドもすべて読み込まなければなりません。そして変更していないフィールドや、ノード自体もすべて保存し直すことになります。フィールドの数が3つや4つならまだしも、10 や 20、50 ~ものフィールドがあったらどうでしょうか?それで1つか2つのノードを変更したいならまだしも、数千ものノードを連続で修正したい場合は?

コア: 
Drupal7

Drupal ではデフォルトで、匿名ユーザーのコメントの掲載には管理者の承認が必要ですが、承認待ちのコメントを確認するには承認待ちのコメント一覧ページ(/admin/content/comment/approval)にアクセスする必要があります。

これをどこからでも確認できるように、Views を使ってブロックで表示したいと思います。

コア: 
Drupal7

ウェブサイトの構成によっては、そのすべてのページを Google などの検索エンジンが検出できない場合があります。そのような場合は、XML サイトマップを作成し、その存在を知らせることで、サイトの構成を検索エンジンに正しく伝えることが出来ます。

図1

XML サイトマップとは、sitemaps.org の定めるフォーマットに沿って書かれた XML ドキュメントのことです。Drupal には、XML サイトマップを作成するためのサードパーティー製モジュールがいくつか存在しますが、ここではそういったモジュールは使わずに、「Views で XML サイトマップを作る」ということをやってみたいと思います。

タグ: 
コア: 
Drupal7

Drupal の基本機能と Views を使ってリンク集ページを作りたいと思います。動的なページ構成で、リンク1件1件の追加や編集を管理画面から行うことが出来ます。仕上がりは例えばこんなページです。10 ~ 50 件くらいのリンクを(もちろんもっと追加しても良いですが)、いくつかのカテゴリに分けて表示することにします。

図1

リンクアイテムひとつひとつは、ノードで作成します。リンク集のノードにはタイトルと body (説明文)のほかに「url」、「カテゴリー」、「ウェイト」、「管理用メモ」といったフィールド(属性)を設定します。

タグ: 
コア: 
Drupal7

$_GET['q'] もしくは current_path() で取得できます。

タグ: 
コア: 
Drupal7

OGP(Open Graph Protocol)とは、一般のWEB ページの内容を、Facebookに正しく伝えるための規格です。OGPを設定することにより、ウェブページは Facebook のソーシャルグラフのオブジェクトとして適切に扱われるようになり、内容によっては大きなアクセスアップも期待出来ます。

「いいね!」ボタンを設置したときなどは、OGP の設定をしておくと良いと思います。一般的なウェブページの場合、OGP の設定は、まず <html> に xmlns 属性を追加します。

#コード1
<html xmlns:og="http://ogp.me/ns#"
      xmlns:fb="http://www.facebook.com/2008/fbml">

あとは、ページのメタデータ(属性情報)として、例えば以下のようなコードを <head></head> セクションに記述するだけです。

タグ: 
コア: 
Drupal7

Drupal には機能拡張のためのコントリビュートモジュールが多数存在します。ここではフィールドをグループ化して表示するモジュール Field group を例に、モジュールのインストール方法について説明します。

コア: 
Drupal7

Drupal は柔軟に、そしてダイナミックにWEB サイトに機能を追加したり、カスタマイズを加えることができます。しかしそれでもある程度複雑な機能のウェブサイトを構築しようとすると、カスタマイズしきれない部分というのがいくつか出てきます。要望にマッチしたコントリビュートモジュールを探すのも一つの手ですが、それもなかなか大変です。

フック(※1)の記述場所として、サイトごとに調整用のカスタムモジュールをひとつ作っておくと、対応するフックにわずかなコードを加えるだけで、細かい部分まで対応できるので便利です。

Drupal のモジュールの作成は簡単です。

コア: 
Drupal7

フィールドコレクションのテンプレートのカスタマイズで、少しハマったので、メモしておきます。

「賃貸物件(forrent)」というコンテンツタイプのノードに、近くの駅を表示する「アクセス(field_access)」というフィールド(フィールドコレクション)があるとします。「アクセス(field_access)」フィールドコレクションのフィールドには、「駅(field_station)」、「徒歩分(field_walk)」、「バス(field_bus)」があります。「駅(field_station)」は路線の中の最寄り駅、「徒歩分(field_walk)」はその駅から物件まで徒歩何分かかるかを示すフィールド、「バス(field_bus)」はその駅からバスで何分かかるかを示すフィールドです。

複数の路線の駅からアクセス出来る場合もあるので、「アクセス」フィールドの値の数は無制限とします。

コア: 
Drupal7

Drupal で URL クエリのパラメータを取得するには、drupal_get_query_parameters() を使います。

PHP なら普通に $_GET で取得できますが、それを Drupal で使いやすいように整形してくれます。

タグ: 
コア: 
Drupal7

ページ