Geeklog IvySOHOプロジェクト
Geeklog Documentation

テーマの作成方法

Geeklogのテーマは簡単に手早く作成できます。HTMLファイルを扱えればテーマを作成することができます。PHPを覚える必要はありません。


本家デモサイト( http://demo.geeklog.net) で見ることができる89種類のテーマの一部

テーマの作成

初めに、(もしあれば)実行したいものに最も近い既存のテーマをコピーしてください。しようとすることが根本的に違っている場合(そう願っていますが)、いずれかひとつのコピーを行います。テーマに付けたい名前に既存のテーマをコピーしてください。(テーマの名前にスペースを入れないでください。)

cp -R /path/to/geeklog/public_html/layout/Yahoo /path/to/geeklog/public_html/layout/My_Theme_Name_No_Spaces

新しいテーマのディレクトリに変更してください。

cd /path/to/geeklog/public_html/layout/My_Theme_Name_No_Spaces

ニーズに合うようにテンプレートを編集してください。テンプレートは、一般的にHTMLファイルの一部であることを覚えておいてください。作成したディレクトリは、Geeklogに必要なテンプレートをすべて保持していますが、見た目に大きなインパクトを与えるためには少し修正が必要になります。

特に、以下は変更したいと思われるテンプレートです。

テーマの作動方法

Geeklog はサイトのヘッダーを作っているheader.thtmlでスタートし、それから続けてブロックの左カラムを囲い込みます。 (変数 {left_blocks} とleftblocks.thtmlファイルを探してください。) サイトの中央部分は、storytext.thtml、storybodytext.thtml (ノーマル記事用)、 featuredstorytext.thtml、featuredstorybodytext.thtml (特集記事用) のテンプレートファイルを使って作られた記事で構成されます。それからfooter.thtmlファイルがブロックの右カラム (変数 {right_blocks}、ファイルright_blocks.thtml)とサイトのフッターを作ります。ブロック自体はblockheader.thtmlとblockfooter.thtmlのファイルで構成されます。

基本レイアウト:

上記は Geeklogのメインページと記事がどのように書かれるかを説明しています。Geeklogで見るいろいろなエディタやリスト、またカレンダーやGeeklogのほとんどの部分に対して、もっと多くのテンプレートが存在します。

※http://geeklog.ivysoho.com/ テーマをtest に変更すると、テーマの詳細利用状況を確認できます。(Ivy SOHO追加)

どのテンプレートファイルが、Geeklogのどの部分に使われるかを明示している完全なリストが現在ありません。しかしほとんどの場合、テーマのレイアウトディレクトリのファイルとディレクトリの名前を見れば、その使用がはっきりします。Geeklogの一定の部分を作るのに、どのテンプレートファイルが使われているかわからない場合は、URLを見てください。そこでPHPファイルの名前がわかります。たとえば、ユーザープロファイルを見るときは、users.phpファイルとなります。そのファイルを開けて、 '.thtml'を検索してくだい。プロファイルでは、次のような行になっています。 (関数 userprofile()で):

$user_templates = new Template ($_CONF['path_layout'] . 'users');
$user_templates->set_file (array ('profile'=>'profile.thtml', 'row'=>'commentrow.thtml', 'strow'=>'storyrow.thtml'));

テンプレートファイルprofile.thtml、commentrow.thtml、storyrow.thtmlの使用を知るためにPHPコードを理解する必要はありません。一行目は、テーマのレイアウトディレクトリ内のusersディレクトリからこれらのファイルが取り出されていることも示しています。

テーマと後続情報のテスト

テーマを編集した後、それをテストする準備ができます。http://mygeeklogsite/usersettings.php?mode=preferences へ行って、テーマのドロップダウンで新たに作成したテーマを選択してください。(テーマの名前は、テーマ用のディレクトリと同じ名前であることに注意してください。)

最終的には、テーマの画像ディレクトリのロゴや他の画像をアップデートする場合もあります。

テンプレートシステムに関しては、PHPLibのテンプレートクラス(http://phplib.sourceforge.net/) を使用しています。そこのドキュメントを読んで、それがどのように実行されているか知るために、任意で /path/to/geeklog/system/classes/template.class.php を見てください。この知識があっても、どのテンプレートがお互いに関連して使われているのかはっきりしない場合があります。 (たとえば、storybody.thtmlとstorybodytext.thtmlが一緒にひとつの記事の完全なフォーマットを作っています。)ご質問がある場合は、http://lists.geeklog.net/listinfo/geeklog-usersでメーリングリストに参加するか、 #geeklogの irc.freenode.netでIRCでチェックしてください。

TIPとコツ

テーマと WYSIWYG エディタ: Geeklogで使われるテンプレートファイルは、完全なHTMLファイルではなく、Geeklogが固有のHTMLドキュメントを作るために組み合わせたHTMLの部分だけを含んでいます。しかし、これはWYSIWYG HTML エディタのいくつかを混乱させていると思われ、そのエディタが、ファイルから紛失してGeeklogで使えなくなったと考えたHTMLを追加してしまう傾向があります。
テーマを編集するには、シンプルテキストエディタを使うことをお勧めします。

テーマのPHP:テーマのヘッダー、たとえばheader.thtmlファイルなどのPHPを使うことができます。カスタムPHP機能を使用したい場合は、あなたのテーマディレクトリ内のfunctions.phpファイルにその機能を入れることができます。

外観の違う左ブロックと右ブロック:左右のブロックを違った外観にできます。詳細はGeeklogホームページのこの記事をご覧ください。

ポーリング:ポーリング結果のグラフィック・ディスプレイ内のマルチカラーバーを使うために、pollbooth/pollvotes_bar.thtmlのテンプレートファイルにある{answer_counter}と{answer_odd}の変数を利用することができます。{answer_counter}は、それぞれの回答に対する連続番号に替わることになります。従って、bar{answer_counter}.gifはbar1.gif、bar2.gif等になります。このGIFそれぞれに違った色を付けると、各回答にも違った色をつけることになります。
{answer_odd}は回答ごとに0と1を交互に使うことになるので、bar{answer_odd}.gifは、一番目、三番目、五番目等の回答にはbar0.gif、二番目、四番目等の回答にはbar1.gifとなります。

右カラムの左ブロック:$_CONF['left_blocks_in_footer'] ( config.php) は、かなり変わったオプションです。{left_blocks}変数をサイトのフッター(たとえば、footer.thtml)で使えるようにしますが、同時にヘッダー(header.thtml)では使えなくなります。
これは、右側にブロックを作りたいときだけ二つのコラムレイアウト(一つのコラムはブロック用で、もう一つはコンテンツ用)に使えます。通常左ブロック(たとえば、article.phpか管理者ページなど)を表示しているだけのページでは、まったくブロックなしで終わせるので、ブロックすべてを右に移動させると期待通りに動かなくなります。$_CONF['left_blocks_in_footer'] = 1を設定すると、これを修正しますので、内部ではまだ左ブロックとして扱われているブロックでも、実際には右に表示されます。
テーマのheader.thtml、footer.thtml、leftblocks.thtmlにはおそらく調整が必要になります。config.phpで変更されていない $_CONF変数を残して、代わりにそれをテーマのfunctions.phpに上書きすることをお勧めします。そうすれば、たとえば“ノーマル”テーマか右にブロックがあるテーマかをユーザーが選択できます。

Geeklog 1.4.0でのテーマ変更

新しいテーマファイルを紛失したら、Geeklogで送られるデフォルトテーマ(professional)からコピーできます。

管理テンプレート

Geeklog 1.4.0 は、多くのテーマ変更が必要だった改訂管理セクションに付いています。従って、Geeklog 1.4.0が付いているので、管理ディレクトリがあるテーマの管理ディレクトリ全体をGeeklogのデフォルトテーマ(professional)から戻し、後でもう一度管理テンプレートにあなたが行った修正を適用することをお勧めします。

その他の変更

Theme changes in Geeklog 1.3.11

There are no mandatory theme changes in Geeklog 1.3.11, so themes made for Geeklog 1.3.10 will work just fine without any modifications.

A few minor additions / new options have been introduced:

Theme changes in Geeklog 1.3.10

General note: To upgrade your custom theme for use with Geeklog 1.3.10, you can simply copy over any new template files from the Geeklog default theme.

The biggest change in Geeklog 1.3.10 is that we now ship it with only one default theme (the Professional theme, kindly provided by Victor B. Gonzalez) and that the previously included themes are now available as a separate download.

Admin templates

Most themes don't change the template files in the theme's admin directory, so you can often save yourself a bit of work by simply replacing the entire admin directory with the one from the Geeklog 1.3.10 distribution.

Other templates

Optional changes

The following is a list of optional changes (mostly new variables that are now available). This information is mostly of interest for those who want to develop their own themes.

Theme changes in Geeklog 1.3.9

Theme changes in Geeklog 1.3.8

Theme changes in Geeklog 1.3.8 were mostly aimed at moving as much of the hard-coded HTML into template files as possible. Other changes were made to give theme authors better control over the layout and a small portion of changes were done to incorporate new Geeklog features.

New template files

This is a list of the new files. You can safely copy these over from one of the standard themes that ship with Geeklog (most of these files contain HTML that was previously hard-coded into Geeklog).

adminoption_off.thtml
loginform.thtml
topicoption.thtml
topicoption_off.thtml
useroption_off.thtml
admin/database/listbackups.thtml
admin/database/listitem.thtml
admin/user/edituser.thtml
admin/user/plainlist.thtml
comment/commentbar.thtml
comment/startcomment.thtml
pollbooth/pollanswer.thtml
pollbooth/pollblock.thtml
pollbooth/pollcomments.thtml
pollbooth/pollresult.thtml
pollbooth/pollvotes_bar.thtml
pollbooth/pollvotes_num.thtml
preferences/boxesblock.thtml
preferences/commentblock.thtml
preferences/deleteaccount.thtml
preferences/digestblock.thtml
preferences/displayblock.thtml
preferences/displayprefs.thtml
preferences/excludeblock.thtml
preferences/language.thtml
preferences/privacyblock.thtml
preferences/profile.thtml
preferences/theme.thtml
preferences/username.thtml
preferences/userphoto.thtml
search/resultauthdatehits.thtml
search/resultrowenhanced.thtml
search/resultsummary.thtml
search/resulttitle.thtml
users/newpassword.thtml
Note: preferences and admin/database are new directores. Changed /
updated template files These files have changed since Geeklog 1.3.7, i.e.
they may contain new variables, table columns, etc.
If you haven't changed these files in your existing theme,
it is probably best to simply copy them over from one of the themes that ship with Geeklog
(with the exception of style.css and header.thtml
, see below). style.css (see below)header.thtml
(see below)admin/block/blockeditor.thtml
admin/block/listblocks.thtml
admin/block/listitem.thtml
admin/event/eventeditor.thtml
admin/event/eventlist.thtml
admin/event/listitem.thtml
admin/group/grouplist.thtml
admin/group/listitem.thtml
admin/story/liststories.thtml
admin/topic/listitem.thtml
admin/topic/topiceditor.thtml
admin/topic/topiclist.thtml
calendar/editpersonalevent.thtml
calendar/eventdetails.thtml
search/searchform.thtml
search/searchresults.thtml
submit/submitevent.thtml
users/getpasswordform.thtml

In style.css, four classes have been added that are used in the new search code of Geeklog 1.3.8. Instead of copying over the entire file, you will probably only want to copy over the code for those four classes: searchAuth, searchDate, searchHits, highlight.

If the header.thtml of your theme is using the {menu_elements} variable, then you do not need to make any changes to it. If it is not using that variable, then you will need to make one change to it. In that case, search your header.thtml for the link to the story submission form, i.e. something like

<a href="{site_url}/submit.php?type=story">

and change it to read

<a href="{site_url}/submit.php?type=story{current_topic}">

Removed template files

If you have a file named commentheader.thtml in your theme directory, you can safely remove it. It isn't used at all.

Theme changes in Geeklog 1.3.7

Please note that all the following changes are optional. Themes made for Geeklog 1.3.6 will work just fine with Geeklog 1.3.7 - no changes are necessary.

New features and improvements

Other changes

Theme changes in Geeklog 1.3.6

There have been a lot of changes in the themes for 1.3.6 to get rid of the last pieces of hard-coded english texts so as to make localisation easier. Most of these changes have been made in the Admin editors (admin directory) and the calendar (calendar directory). If you created your own theme for an earlier version of Geeklog, we recommend that you copy over these two directories from one of the themes that come with Geeklog (choose one that is similar to your own theme or which it was originally based on). It seems like most Geeklog themes didn't change these files anyway, so this shouldn't be too much of a hassle ...

Other changes

CSS changes

Note: Theme authors are encouraged to specify a character set in the header.thtml of their themes like this:

<meta http-equiv="Content-Type" content="text/html; charset={charset}">

Geeklog will replace the {charset} variable with the proper character set based on the currently used language file. Also make sure that you put the above line before the <title> tag in the <head> section of your header.thtml file.