(子供の発表会みたいな内容ですので、サラッと読み流してください
)
「カスタマイジングxoops」を参考にしながら、テーマをいろいろといじっている段階なわけで、ヘッダ部にログインしているユーザー名を表示させようと目論見ましたが、どうせならハンドル名(本名)を表示させたほうが人間味があるよなぁ(←日本人的)とか思ったわけです。
「gonbeiさん、こんにちは」→「権兵衛さん、こんにちは」
しかしユーザーによってはアカウント情報で「本名」を設定していない人もいるわけでして、そういう人の場合は…
「さん、こんにちは」
となってしまうわけで…、つまり、「本名が設定されていない場合には、ユーザー名を表示する」ということをすればいいわけで、同書でのGIJOEさんのmodifier.xoops_userinfo.php を参考に、新たなSmartyプラグインを作ってみたわけです。
modifier.xoops_uhandle.php
<?php
function Smarty_modifier_xoops_uhandle( $uid )
{
if( $uid > 0 ){
$member_handler =& xoops_gethandler( 'member' );
$user =& $member_handler->getUser( intval( $uid ));
if( is_object( $user )){
if( $user->getVar( 'name' )== '' ){
return $user->getVar( 'uname' );
} else {
return $user->getVar( 'name' );
}
} else {
return _GUESTS;
}
} else {
return _GUESTS;
}
}
?>
で、theme.html で以下のように設定してやれば、一件落着。
<{$xoops_userid|xoops_uhandle}>さん、こんにちは
コード自体泥臭いですし、本当は素直にSmarty変数にアサインできればいいんでしょうけど、まだそこまでの力量はありません。
というわけで、引き続き勉強させていただいております。