Drupal 5.x で Permalink を表示する方法
コンテンツのリンク領域("続きを読む" とかが表示されるところ)に Permalink を表示するようにした時の作業メモ。
方法としては、テーマテンプレートに記述するか、モジュールを作成するかになると思うので、その両方を。
テーマの方では l() 関数を、モジュールの方では hook_link() 関数を使っています。 t() も使ってるけど、まぁそれは...
テンプレートに記述する方法
コレがやっぱり一番簡単だと思うけど、node.tpl.php ファイルの $links が記述されているあたりに 1行(じゃなくてもいいけど...)こんな感じ↓のコードを追加するだけ。
これで、node/ID 形式の内部 URL または URL エイリアスが定義されていればその URL を使った Permalink がこんな感じ↓で出力される。
<a title="Permalink" href="/node/xx">Permalink</a>
厳密に言うと、$links は <ul> を使ったリストなので、そのリストの中の一つの項目として Permalink が追加されるわけではなくて、ブラウザで閲覧した時に同じ場所に並んで表示されてるというだけだから、そういうとこにこだわる場合はやっぱりモジュール化という選択肢になるかも。
モジュールを作成する方法
モジュールを作成する場合は、モジュールの一覧に表示したりするために .info ファイルが必須になるので、とりあえずこんな感じ↓で permalink.info ファイルを作成。(説明やバージョンなんかは適当で...)
-
; $Id: permalink.info,v 1.0 YYYY/MM/DD NAME Exp $
-
name = Permalink
-
description = Add permalink to the links.
-
version = "5.x-1.0"
あとは、モジュールの本体(?)となる permalink.module ファイルを作成して、hook_link() 関数を使って $links リストの中に一つの項目として追加するためのコード ↓を記述するだけ。
-
<?php
-
// $Id: permalink.module,v 1.0 YYYY/MM/DD NAME Exp $
-
-
/**
-
* Implementation of hook_link().
-
*/
-
function permalink_link($type, $node = NULL, $teaser = FALSE) {
-
if ($type == 'node') {
-
'href' => 'node/'. $node->nid,
-
);
-
}
-
return $links;
-
}
日本語翻訳(.po)ファイルは必要に応じて、というこうことで...
- [補足]
- このサイトでは、工事中の頻繁な URL 変更に配慮するために、URL エイリアスが設定されているコンテンツにも node/ID 形式の内部 URL を使用した Permalink を設置していますが、実際にはバックリンク数が分散されてしまうなどの影響が生じる可能性がありますので、お勧めしません。(→ ということで、記載を省いています。)

