24h購物| | PChome| 登入
2010-05-03 22:08:42| 人氣3,624| 回應4 | 上一篇 | 下一篇

將Xoops的PM模組,將帳號名單改成真實姓名的清單

推薦 0 收藏 0 轉貼0 訂閱站台

由於目前的PM模組(Xoops 2.4.2)

如果要傳訊給其他人,要記住其他人的帳號而沒有看到真實姓名還蠻困難的
感謝神讓我想到修改PM模組的方法
將PM模組改為可以顯示真實姓名的模組
提供修改步驟給大家,希望可以對XOOPS的站長們帶來幫助

步驟如下
1.修改Kernel目錄下的member.php
    在XoopsMemberHandler這個class之下增加一個Function

    function getUserRealNameList($criteria = null)
    {
        $users = $this->_uHandler->getObjects($criteria, true);
        $ret = array();
        foreach (array_keys($users) as $i) {
            $ret[$i] = $users[$i]->getVar('name');
        }
        return $ret;
    }

2.在class\xoopsforms的目錄下,複製formselectuser.php為formselectusername.php  
   把第34行改成
class XoopsFormSelectUserName extends XoopsFormElementTray

   把第47行改成
function XoopsFormSelectUserName($caption, $name, $include_anon = false, $value = null, $size = 1, $multiple = false)

   把第65行改成
$users = $member_handler->getUserRealNameList($criteria);

3.修改modules\pm\pmlite.php
   把第94行改成
    $pm_uname = XoopsUser::getUnameFromId($pm->getVar("from_userid"),1);

   把第117行改成
$GLOBALS['xoopsTpl']->assign('to_username', XoopsUser::getUnameFromId($_POST["to_userid"],1));

   把第123行改成
 $GLOBALS['xoopsTpl']->assign('to_username', XoopsUser::getUnameFromId($to_userid, 1));

   把第125行與第126行
            $to_username = new XoopsFormSelectUser('', 'to_userid');
            $GLOBALS['xoopsTpl']->assign('to_username', $to_username->render());
改成以下兩行文字
require_once $GLOBALS['xoops']->path('class/xoopsform/formselectusername.php');
$to_username = new XoopsFormSelectUserName('', 'to_userid');

4.然後進入管理區更新模組,就大功告成了


相關檔案下載http://www.ballsum.com.tw/pm_hack_www.zip

本修改的方法,歡迎共享
作者:林哲安(jonah@hopechurch.org.tw)

台長: Jonah
人氣(3,624) | 回應(4)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: 職場 |
此分類下一篇:有夢雖美,美不過柴米油鹽...
此分類上一篇:2010.3.15小老闆日記

(悄悄話)
2010-05-06 16:53:34
失敗者
有的版本跟你一樣~
無論下載檔案,還是用key都不能使用~
收件人 那一欗 空白未帶入使用者
2010-09-22 01:40:39
jim
3.修改modules\pm\pmlite.php
把第125行與第126行
$to_username = new XoopsFormSelectUser('', 'to_userid');
$GLOBALS['xoopsTpl']->assign('to_username', $to_username->render());
改成以下三行文字
require_once $GLOBALS['xoops']->path('class/xoopsform/formselectusername.php');
$to_username = new XoopsFormSelectUserName('', 'to_userid');
$GLOBALS['xoopsTpl']->assign('to_username', $to_username->render());


這樣應該可以用
2011-11-10 10:40:52
jim
大大這篇寫得很好,剛好小弟需要,感謝您唷^^
2011-11-10 10:41:40
是 (本台目前設定為強制悄悄話)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文