まず、リスト6-12をthme.htmlの冒頭に挿入します。

<{php}>
	// new_messages に新着PM数をアサインする
	global $xoopsUser ;
	if( is_object( $xoopsUser ) ) {
		$pm_handler =& xoops_gethandler('privmessage');
		$criteria = new CriteriaCompo(new Criteria('read_msg', 0));
		$criteria->add(new Criteria('to_userid', $xoopsUser->getVar('uid')));
		$new_messages = $pm_handler->getCount($criteria) ;
		$this->assign( 'new_messages' , $new_messages ) ;
		if( empty( $_SESSION['new_messages'] ) ) $_SESSION['new_messages'] = 0 ;
		if( $_SESSION['new_messages'] < $new_messages ) $this->assign( 'open_message_alert' , 1 ) ;
		$_SESSION['new_messages'] = $new_messages ;
	} else {
		$this->assign( 'new_messages' , 0 ) ;
	}
<{/php}>
次に、theme.htmlで、この部分を探します。

<script type="text/javascript">
<!--
<{$xoops_js}>
//-->
</script>
見つかったら、以下のように挿入します。

<script type="text/javascript">
<!--
<{$xoops_js}>
function xbook_onload(){
  <{if $open_message_alert}>
    alert("PMが届いています");
  <{/if}>
}
//-->
</script>
あとは、タグに、

onload="xbook_onload();"
を挿入するだけです。 メッセージ数の表示はリスト6-13のような部分をテーマの適切な箇所に挿入します。

  <{if $new_messages > 0}>
    <a href="<{$xoops_url}>/viewpmsg.php"><img src="<{$xoops_imageurl}>pm_on.gif" title="PMが<{$new_messages}>件届いています"></a>
  <{else}>
    <a href="<{$xoops_url}>/viewpmsg.php"><img src="<{$xoops_imageurl}>pm_off.gif" title="受信箱は空です"></a>
  <{/if}>