<p>まず、記事の本文テンプレートに各話題のIDなどの情報を持ってくる必要があるので、Geeklog公式の<a href="http://wiki.geeklog.jp/index.php/%E8%A8%98%E4%BA%8B%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AB%E3%83%91%E3%83%B3%E3%81%8F%E3%81%9A%E3%83%AA%E3%82%B9%E3%83%88%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B">記事ページにパンくずリストを表示する</a>を見ながらハックするが、ひとつ思ったこと。</p>
<p>こんな書き方でわかるん？</p>
<p>追加するする内容は以下であることは明確であるのだが、どこかわからん...</p>
<pre class="code">
        &#36;topicname = &#36;story-&gt;displayElements('topic');
        &#36;topicurl = &#36;_CONF['site_url'] . '/index.php?topic=' . &#36;story-&gt;displayElements('tid');
        &#36;story_template-&gt;set_var ('story_topic_name', &#36;topicname);
        &#36;story_template-&gt;set_var ('story_topic_url', &#36;topicurl);
        &#36;story_template-&gt;set_var ('story_topic_id', &#36;story-&gt;displayElements('tid'));
</pre>
<p>まあ、適当にソースコードを見て追加する。プログラマだからできるんだよな。一般人無理だろ？</p>
<pre class="code">
    } elseif ((&#36;mode == 'print') &amp;&amp; (&#36;_CONF['hideprintericon'] == 0)) {

				... 印刷用 ...
				...  中略  ...

       &#36;display = &#36;story_template-&gt;finish (&#36;story_template-&gt;get_var('output'));
    } else {
        // Set page title
        &#36;pagetitle = &#36;story-&gt;DisplayElements('title');

				... 表示用 ...
				...  中略  ...

        &#36;story_template-&gt;set_var('layout_url', &#36;_CONF['layout_url']);
        &#36;story_template-&gt;set_var('story_id', &#36;story-&gt;getSid());
        &#36;story_template-&gt;set_var('story_title', &#36;pagetitle);
        &#36;story_options = array ();

				...269行目。ここに追加

        if ((&#36;_CONF['hideemailicon'] == 0) &amp;&amp; (!empty (&#36;_USER['username']) ||
    ... 以下省略
</pre>
<p>とまあ、ハックはこんな感じ。追加する場所によっては権限が無いときに表示されるブロックや、印刷時の出力用などのブロックがあるので適当に追加すると期待通りの動作をしない。</p>
<p>ここからが手探り、Geeklog公式の話題ごとに異なるテーマとかを見ても、異なる画像を表示しているだけでその部分が表示されたりされなかったりするわけでは無いので期待した動きをしない。HTMLソース的にはただテーマ文字列と同じ名称を持つ画像を選んでるだけなのだ。</p>
<p>そこで、css の display などを使用する事を検討したが、無理と判断。<br />
最終的に選択した方法が、Javascript で文字列を書き出す方法。<br />
くろねこは、ゼネピックとMoEのブログにコピーライトを表示させたかったので、下記のような Javascript になった。</p>
<pre class="code">
&lt;script type=&quot;text/javascript&quot;&gt;
&lt;!--
switch(&quot;{story_topic_id}&quot;) {
  case &quot;Blog_Game_XenepicOnl&quot;:
  case &quot;Game_XenepicData&quot;:
    document.write(&quot;&lt;p&gt;(c)2005-2008 DNC Entertainment&lt;br /&gt;(c)2008 Q Entertainment Inc.&lt;/p&gt;&quot;);
    break;
  case &quot;Blog_Game_MoE&quot;:
    document.write(&quot;&lt;p&gt;(C)2007 HUDSON SOFT / GONZO ROSSO All rights reserved.&lt;br /&gt; 株式会社ゴンゾロッソ及び株式会社ハドソンの著作権を侵害する行為は禁止されています。&lt;/p&gt;&quot;);
    break;
}
// --&gt;
&lt;/script&gt;
</pre>
<p>これを記事の本文テンプレートの表示したい位置に追加する。くろねこは、最下部に表示したかったので最後の&lt;/div&gt;の直前に追加した。これで、story_topic_id ごとに switch で分岐して適切な文言が document.write で出力される。<br />
今回の処理では switch を使ったので話題が増えても分岐を増やすだけで対応可能なのでとても便利である。<br />
しかし、複数のテーマを使用するならこの JavaScript は外部ファイルにしておくほうが、メンテナンスはしやすいだろう。 とりあえず今回は、PC用のテーマは1つだったのでこの形としている。</p>
<p class="add">12-08追記<br />
article.thtml に追加すると個別表示した際の一番下などに表示することが出来ますね。<br />
そこにアフィリエイト広告を追加してみました。よかったらクリックしてみてください。</p>