CGIの改造方法

TIPS

ちょっとしたTIPSや、ご意見箱からよくいただく要望の中で現状でも可能なものを紹介。基本的に Web Diary Pro が対象ですが、他のプログラムにも応用できるかも。

あまり整理できていないですが、参考までにどうぞ。

ファイルサイズの軽減

Web Diary Pro は、文字コード変換処理を実行する際にJcodeモジュールを利用します。また、外部サーバーと通信する際にLWPモジュールなどを利用します。
ですが、これらは大抵のサーバーではインストール済みになっているため、各モジュールをアップロードしなくても動作することが多いです。

モジュールがインストール済みのサーバーの場合、lib/ 内にある webliberty フォルダ以外のファイルとフォルダは、すべて削除しても大丈夫です。削除した状態で、携帯用表示とトラックバック送受信が正しく実行できるようならば、問題はありません。

これらを削除すると、Web Diary Pro のファイルサイズを大幅に減らすことができます。

比較的容易に導入できそうなWYSIWYGエディタ

導入にはCSSなどの調整も必要です。

Web Diary Pro でサイト全体を構築

役に立つかもしれない機能。

初期設定の拡張設定機能
管理者ページのみ別デザインにしたり、特定の分類一覧ページを別デザインにしたり…と、柔軟な設定を行う事ができます。
インデックスページの設定について
初期ページのみ専用ページを表示させることができるので、ブログっぽくないページにできます。
記事IDの設定について
記事表示用のURLやアップロードファイル名を指定可能。
HTML書き出し機能について
上手く利用すれば、負荷を軽減できる。トップページから特定の分類ページにリンクする場合、分類の記事一覧ページも書き出すと良い。
分類コードから分類一覧を表示させる方法について
分類一覧へのリンクを固定URLに変更。
複数の管理者で記事を投稿する方法について
複数の人でサイトを管理。

役に立つかもしれないプラグイン。

コンテンツ管理プラグイン
時系列の記事とは別に、ブラウザからページを作成する事ができます。
ギャラリー表示プラグイン
ミニ画像をもとに簡易ギャラリーページを自動作成します。
情報表示プラグイン
日記帳の任意の場所に、管理ページから登録した情報を表示する事ができます。
TopicPathプラグイン
パンくずリストを表示します。
Menuプラグイン
画像付きでメニューを管理できます。
FieldTitleプラグイン
各ページに、分類名を見出しとして表示します。

曜日の表記、カレンダーの月表記を変更

lib/webliberty/App/Init.pm の210行目あたりで設定可能です。

HTMLやJSファイルの書き出し先を変更

lib/webliberty/App/Init.pm の80行目~で設定可能です。

記事個別表示ページに、トラックバックURLを表示

skin/diary.html の70行目あたりにある

<ul>
  <li><a href="${INFO_PATH}?mode=trackback&amp;no=${ARTICLE_NO}#contents">この記事にトラックバックを送信する</a></li>
</ul>

この部分を以下のように変更します。

<dl>
  <dt>この記事のトラックバックURL</dt>
    <dd><code>${INFO_TBPATH}/${ARTICLE_NO}</code></dd>
</dl>

一つの記事に複数の分類を登録

未対応。ただし階層化が無くてもよければ、タギングプラグインを導入すれば可能です。

管理者ページの記事一覧に、記事の分類を表示

skin/admin_edit.html の30行目あたりにある <!--SKIN_DIARY_START--><!--SKIN_DIARY_END--> の間に ${ARTICLE_FIELD} と記述すると、分類名が表示されます。分類表示用の列を追加したい場合は、付近のテーブルタグも適当に編集します。

投稿者ごとの記事一覧を表示

skin/navigation.html の255行目あたりにある

<li><a href="${INFO_PATH}?mode=profile&amp;user=${PROFILE_USER}">${PROFILE_NAME}</a></li>

この部分を以下のように変更すると、記事件数クリック時に一覧が表示されます。

<li><a href="${INFO_PATH}?mode=profile&amp;user=${PROFILE_USER}">${PROFILE_NAME}</a> (<a href="${INFO_PATH}?user=${PROFILE_USER}">${PROFILE_SIZE}件</a>)</li>

オートリンク機能のリンクをクリックしたとき、別ウインドウでページを開く

「環境設定 → 投稿記事の表示設定 → 自動リンク時に付加する属性」を target="_blank" と設定すれば可能です。ただし、別ウインドウでのページ表示は推奨されていない上、XHTML1.0 Strict では文法違反なので注意。

リンク集を別ウインドウで開く

skin/navigation.html の230行目あたりにある

<li><a href="${LINK_URL}">${LINK_NAME}</a></li>

この部分を以下のように変更すれば可能です。

<li><a href="${LINK_URL}" target="_blank">${LINK_NAME}</a></li>

ただし、別ウインドウでのページ表示は推奨されていない上、XHTML1.0 Strict では文法違反なので注意。

拡張設定で「トップページならば」を設定する

以下のようにすると、トップページが表示されているときのみ、ヘッダ部分のスキンを切り替えることができます。

%{$init->{rewrite}} = (
  '{query}{mode}={}&{query}{no}={}&{query}{id}={}&{query}{date}={}&{query}{field}={}&{query}{user}={}&{query}{target}={}' => '{skin_header}={header_top.html}',
  '' => '',
  '' => '',
  '' => '',
  '' => ''
);

セットアップモードについて

Professinonal版には、セットアップモードが実装されています。セットアップモードは、?mode=setup を付加してプログラムを実行すると、呼び出すことができます。

セットアップモードを実行すると、

が実行されます。また、管理者ページにログインした状態で実行すると、

も同時に実行されます。