bass-inu's blog

非IT企業Web担当者だった無職の雑記

オープンソースFAQシステム「phpMyFAQ」のカスタマイズ

オープンソースのFAQシステム「phpMyFAQ」
日本語化もされているけど、どうも情報が少ない…
カスタマイズはほとんどの場合テンプレートを編集すれば出来る。
公式:phpMyFAQ homepage - open source FAQ software | welcome
日本語サイト:phpMyFAQ.JP 日本語サイト - FAQシステム構築 by phpMyFAQ


テンプレート編集だけでは出来ない部分のカスタマイズメモ
バージョンは phpMyFAQ 2.7.2

タイムゾーン修正

/config/constants.php
39行目を以下に修正

define('PMF_DATETIME_TIMEZONE_DEFAULT', 'Asia/Tokyo');

検索ページのFAQ閲覧回数の非表示

/inc/Faq.php
444行目

$listItem = sprintf('<li>%s<span id="viewsPerRecord"><br /><span class="little">(%s)</span>%s</span></li>',

611行目

$listItem = sprintf('<li>%s<br /><span class="little">('.$this->plr->GetMsg('plmsgViews',$visits).')</span></li>',

以上2箇所のspanタグを削除する。

$listItem = sprintf('<li>%s</li>',

左サイドにタグクラウドを表示させる

/index.php
443行目あたりから始まる
$main_template_vars = array(
の中に以下を追加

'writeTagCloudHeader' => $PMF_LANG['msg_tags'],
'writeTags'           => $oTag->printHTMLTagsCloud(),

テンプレートファイル index.tpl

<div id="leftContent"></div>

の中に以下を追加

<section>
<header>
<h3>{writeTagCloudHeader}</h3>
</header>
<div id="tagcloud-content">
{writeTags}
</div>
</section>

全ページに検索フォームをつける

どのページからも検索できるようにします。カテゴリーも選べるように。
もっとスマートな方法があるかもしれません…
記事ページはカテゴリー選択がうまくいきませんorz


/index.php
443行目あたりから始まる
$main_template_vars = array(
より上に以下を追加

$faqCategoryHelper = PMF_Helper_Category::getInstance();
$faqCategoryHelper->setCategory($category);
$category->buildTree();

$main_template_vars = array(
の中に以下を追加

'selectCategories'         => $PMF_LANG['msgSelectCategories'],
'allCategories'            => $PMF_LANG['msgAllCategories'],
'printCategoryOptions'     => $faqCategoryHelper->renderCategoryOptions($inputCategory),
'writeSendAdress' => '?'.$sids.'action=search',
'searchBox'       => $PMF_LANG['msgSearch'],
'categoryId'      => ($cat === 0) ? '%' : (int)$cat,
'msgSearch'       => sprintf(
  '<a class="help" href="%sindex.php?action=search">%s</a>',
  $systemUri,
  $PMF_LANG["msgAdvancedSearch"])

テンプレートファイル index.tpl
ヘッダーやフッターやナビゲーション、お好きなところに以下の感じで追加
適宜CSSを編集して下さい。

<div>
<form id="search" action="{writeSendAdress}" method="get">
<input type="hidden" name="action" value="search" />
<input type="search" name="search" id="searchfield" size="30" placeholder="{searchBox} ..." />
<select name="searchcategory" size="1">
<option value="%" selected="selected">{allCategories}</option>
{printCategoryOptions}
</select>
<input type="submit" name="submit" value="{searchBox}" />
</form>
</div>

検索ページでカテゴリー選択ボックスの中身が二重になってしまうので、
/search.php
117行目を削除

$category->buildTree();