リンクの順序を変更する方法

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で違うスタイルを設定できるようにアトリビュートも変更したほうが良いだろう。

新しいコメントの投稿

このフィールドの内容は非公開にされ、公表されることはありません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 使用できるHTMLタグ: <a> <em> <strong> <code> <cite> <ul> <ol> <li> <dl> <dt> <dd> <p>
  • 行と段落は自動的に折り返されます。
  • Amazon製品へのリンクを次の形式で作成することが出来ます。[amazon product_id inline|full|thumbnail]. 例: [amazon 1590597559 thumbnail]
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • 画像を追加することが出来ます。

書式オプションに関するより詳しい情報...

認証コード
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
画像で表示されている数字および記号を入力してください。