suin.io

「アカウント情報」ページのタイトルをユーザ名にしたい

suin2006年6月13日

アカウント情報のページとは、各ユーザのプロフィールが閲覧できるページです。

そのページのタイトル(<title>タグで囲まれた部分)をユーザ名に書き換える方法を紹介します。

実現方法は3つほどあります。

  1. 白扇をハックする。白扇はメンテナンスが停止しているので、心おきなくハックしてください。
  2. テンプレートに<{php}>タグを使って、ユーザ名を<title></title>に割り当てるロジックを埋め込む。
  3. カスタムブロックを利用して、ユーザ名を<title></title>に割り当てる。

この中でどれを試しても同じ結果が得られますが、わたしの説明では一番簡単なので3番でいきたいと思います。

以下のコードをご覧ください。

<?php/*
ブロックのタイプ : 適当な位置に設定
並び順 : 適当な順番を設定
表示 : はい
表示する画面 : すべてのページ(白扇を使っている場合は白扇だけを選択)
タイトル : 任意のタイトルを設定 (例:ユーザ名をtitleにするブロック)
コンテンツのタイプ : PHPスクリプト
グループ : ゲストを含めた全てのグループ
*/

if( $_SERVER['SCRIPT_FILENAME'] == XOOPS_ROOT_PATH.'/userinfo.php' ){

        global $xoopsDB, $xoopsTpl;
        $myts =& MyTextSanitizer::getInstance();

        $uid = intval(@$_GET['uid']);

        $sql = "SELECT uname FROM ".$xoopsDB->prefix('users')." WHERE uid=$uid";
        list($uname) = $xoopsDB->fetchRow($xoopsDB->query($sql));

        $xoopsTpl->assign('xoops_pagetitle', $myts->makeTboxData4Show($uname));

}

return false;

このコードはURIがuserinfo.phpを含む時に、ユーザの情報が格納されているテーブルを参照、ユーザ名を取り出し、それをページのタイトルに置き換えるという処理を行います。

上のコードをカスタムブロックの「コンテント」に貼り付け、保存してください。その際、「コンテントのタイプ」はPHPスクリプトを選択するようにしてください。また、ゲストや管理者以外のグループにもアクセス権限を与えることを忘れないでください。

RELATED POSTS