NodeのTaxonomyや下部のリンクの間に '::' を入れて見やすくする

Last edited on 2011/02/20 (日) - 15:59

[追記]分割記号の挿入はDrupalを6にあげてテーマをデザインし直した時にやめました

画面コピー

タイトルでは何のことやらと思うかもしれない。

Drupalでは個々のコンテンツのことをノードと呼ぶ。各ノードにはタグをつけて分類できるようにしている。どのようなタグがついているかはノードのタイトルのすぐ下にリンクとして記載している。このタグリンクのリストがいままで空白を間に入れて並べていただけだったので、図の赤で囲ったように '::' で分割したほうが見やすいのではないかと前から思っていた。

また、ノードの下部には Permalink、コメント追加リンク、続きを読むリンクをこれまた空白を間に入れて並べていたので、これも分割記号をいれたかった。

これら2つを実現したので方法を書いておく。

1.Taxonomy のリストに分割記号を入れる

Drupal.org の以下の2つの記事を参考にした。

まず、自分のテーマで使っている Template.phpに以下のコードを加える。


       // taxonomy terms printing
       // I want to insert '::' between terms.
       // reference: http://drupal.org/node/133223 and http://drupal.org/node/213711
       //
       function nyanchew_print_terms($nid) {
         $terms = taxonomy_node_get_terms($nid);
         if (count($terms) > 0) {  
           $output = '';
         }
         return $output;
       }

 

次に node.tpl.php の中に以下の行があると思うので、それを書き換える。


       <?php if (count($taxonomy)): ?>
         
<?php print t(' in '). $terms; ?>
<?php endif; ?>

以下のように $terms をnyanchew_print_terms($node->nid)に置き換える。


       <?php if (count($taxonomy)): ?>
         
<?php print t(' in '). nyanchew_print_terms($node->nid); ?>
<?php endif; ?>

2. ノード下部のリンクリストに分割記号を入れる

こちらは CSSで対応した。以下のコードを適当なCSSファイルに書く。


     ul.links li span:before 
     {
       content: ' :: ';
     }

リンクリストはULで表されているが、実はULの前に個別に単独で Permalink を挿入しているのでこれでうまく行く。通常は最初の要素だけは例外にしないといけないだろう。リンクリストの最初の要素は class=first になっているからこれを利用すればよいと思う。