リンクの順序を変更する方法
投稿者:Nobu 投稿日時:2009/04/26(日) 19:39
Drupalでは一見簡単に思えることが、意外と面倒なことも多い。今回行った変更で、各ノードに付属するリンクの順序を変えるのはその一例と言える。表紙ページには投稿の一覧と見出し部分があり、それぞれ「Nobuさんのブログ」「コメント(または新しいコメントの追加」「続きを読む」などのリンクが表示される。
読者に取っては見出しを読んだら「続きを読む」をクリックするのが自然の流れだと思うのだが、(何もしない状態だと)「続きを読む」は最初のリンクでないために続きがあると分からず、見逃されてしまうことも有り得る。そこで「続きを読む」を見出し文のすぐ後に来るようにし、他のリンクはその後に回すように変更した。
これを行うにはフック関数を実装する必要がある。テーマのフォルダにtemplate.phpというファイルがある(ない場合は作ればよい)。これに次のようなコードを追加すれば、「続きを読む」が先頭になる。
function phptemplate_links($links, $attributes = array()) {
//do whatever to links here
$my_links = array();
// Take out 'Read More'.
if(isset($links['node_read_more']))
{
$my_links['node_read_more'] = $links['node_read_more'];
unset($links['node_read_more']);
}
// Show the 'Read More' first.
$theme1 = theme_links($my_links, $attributes);
// Then, the rest of links
$theme2 = theme_links($links, $attributes);
return $theme1 . $theme2;
}
テーマによってはCSSで違うスタイルを設定できるようにアトリビュートも変更したほうが良いだろう。

新しいコメントの投稿