[追記]分割記号の挿入はDrupalを6にあげてテーマをデザインし直した時にやめました
タイトルでは何のことやらと思うかもしれない。
Drupalでは個々のコンテンツのことをノードと呼ぶ。各ノードにはタグをつけて分類できるようにしている。どのようなタグがついているかはノードのタイトルのすぐ下にリンクとして記載している。このタグリンクのリストがいままで空白を間に入れて並べていただけだったので、図の赤で囲ったように '::' で分割したほうが見やすいのではないかと前から思っていた。
また、ノードの下部には Permalink、コメント追加リンク、続きを読むリンクをこれまた空白を間に入れて並べていたので、これも分割記号をいれたかった。
これら2つを実現したので方法を書いておく。
1.Taxonomy のリストに分割記号を入れる
Drupal.org の以下の2つの記事を参考にした。
- Display taxonomy terms broken out by vocabulary
- HowTo: Have "first" and "last" classes on list view LI's
まず、自分のテーマで使っている 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 = '
';
$num_terms = count($terms);
$i = 1;
foreach ($terms as $key => $term) {
$class = 'taxonomy_term_'.$key;
// Add first and last classes to the list of links to help out hemers.
$extra_class = '';
if ($i == 1) {
$extra_class .= 'first ';
}
if ($i == $num_terms) {
$extra_class .= 'last ';
}
$output .= '
';
}
return $output;
}
次に node.tpl.php の中に以下の行があると思うので、それを書き換える。
<?php if (count($taxonomy)): ?>
以下のように $terms をnyanchew_print_terms($node->nid)に置き換える。
<?php if (count($taxonomy)): ?>
2. ノード下部のリンクリストに分割記号を入れる
こちらは CSSで対応した。以下のコードを適当なCSSファイルに書く。
ul.links li span:before
{
content: ' :: ';
}
リンクリストはULで表されているが、実はULの前に個別に単独で Permalink を挿入しているのでこれでうまく行く。通常は最初の要素だけは例外にしないといけないだろう。リンクリストの最初の要素は class=first になっているからこれを利用すればよいと思う。