原生的newbb功能太陽春了,許多常見的操作都沒有,所以才有這些實用而簡單的hack來補強,也希望官方未來可以列為基本功能(要去官方論壇及github建議才有效)
參考來源為睡蓮大大的池水間,因為新版xoops有小小不同,且睡蓮大大也改用別的CMS了,怕哪天文章消失,就寫了此篇更新後的內容作為備存。
本修改所使用的軟體版本為
修改的行數及檔案可能依版本不同而有所差異,請善用搜尋的方式
原本的設計karma為文章數x50這件事真的有點蠢,不僅多此一舉,應用上也雞肋(其實還有RPG/EXP計算也是不太實用,明明可以有很多玩法的...)
本篇修改則為單純的將karma改為文章數,直覺也實用些,至少再也不會有人問karma是尛...
參考來源:池水間
step1. 首先先修改karma的計算程式檔,共有1個檔案要進行修改
在 /modules/newbb/class/karma.php下約 37 行,將*50刪除 或者原程式碼註解掉,插入一行新的
//$user_karma = $user->getVar('posts') * 50; $user_karma = $user->getVar('posts');
step2. 接下來是修改前台語系檔,共有1個檔案要進行修改
在 /modules/newbb/language/tchinese_utf8/main.php 下約190跟209行,將原來的karma用詞改為文章數,REPLY的翻譯也建議可以修飾一下。
define('_MD_KARMA_REQUIREMENT', '抱歉!您目前有 %s 篇文章數,尚未達到本主題 %s 篇才可觀看的要求。<br /> 請修煉幾日再來吧。'); define('_MD_REQUIRE_KARMA', '觀看要求文章數'); define('_MD_REQUIRE_REPLY', '觀看要求回覆');
step3. 接著是修改後台語系檔,共有1個檔案要進行修改
在 /modules/newbb/language/tchinese_utf8/modinfo.php 下約118行,這是在後台的newbb偏好設定裡,一樣將原來的karma用詞改為文章數。
define('_MI_ENABLE_KARMA', '啟用文章數限制'); define('_MI_ENABLE_KARMA_DESC', '使用者可以設定某個文章數標準。只有達到該標準的成員才能查看此文'); define('_MI_KARMA_OPTIONS', '文章數的可選值');
最後進後台更新一下template及偏好設定裡開啟設定值,並將文章數可選值修改成合理的數字。
打完收工,成果如下圖
以社群的操作經營面來說,吸引了訪客後,下一步就是希望訪客成為會員,而隱藏標籤就是有此輔助功能的hack...
原本newbb只能整個板限定會員觀看,或者直接全面開放,不夠彈性,而偏好設定裡也只有附件才能設定額外的會員觀看限制,其實文章內容也是蠻需要此類限制功能,因此有了此hack
參考來源:池水間
step1. 首先先修改訪客權限時的判斷及看到的訊息畫面,共有1個檔案要進行修改
在 /class/module.textsanitizer.php 下約405行,插入hidden標籤的判斷,以及訪客看到的內容。
$patterns = array(); $replacements = array(); $patterns[] = "/\[hidden](.*)\[\/hidden\]/sU"; if($_SESSION['xoopsUserId']) { $replacements[] = '\\1'; } else { $replacements[] = '<div class="alert alert-warning" role="alert"><a href="'.XOOPS_URL.'/user.php">' . _MD_NEWBB_SEENOTGUEST . '</a></div>'; }
連結至user頁面自行決定要導到login或register,_MD_NEWBB_SEENOTGUEST是原本newbb附件限訪客觀看的文字變數,直接拿來用(若沒裝newbb應該不會用這個hack吧?)
step2. 接下來是系統DHTML編輯器增加hidden的按紐,共有1個檔案要進行修改
在 /class/xoopsform/renderer/XoopsFormRendererBootstrap3.php 下約305行,因為我的佈景是用bootstrap3所以是改這個檔,若您是用別的css framework,請針對你的版本去修改內容及樣式。
$code .= "<button type='button' class='btn btn-default' onclick='xoopsCodeCode(\"{$textarea_id}\", \"" . htmlspecialchars(_ENTERCODE, ENT_QUOTES) . "\");' onmouseover='style.cursor=\"hand\"' title='" . _XOOPS_FORM_ALT_CODE . "'><span class='fa fa-fw fa-code fa-lg' aria-hidden='true'></span></button>"; $code .= "<button type='button' class='btn btn-default' onclick='xoopsCodeQuote(\"{$textarea_id}\", \"" . htmlspecialchars(_ENTERQUOTE, ENT_QUOTES) . "\");' onmouseover='style.cursor=\"hand\"' title='" . _XOOPS_FORM_ALT_QUOTE . "'><span class='fa fa-fw fa-quote-right fa-lg' aria-hidden='true'></span></button>"; $code .= "<button type='button' class='btn btn-default' onclick='xoopsCodeHidden(\"{$textarea_id}\", \"" . htmlspecialchars(_ENTERHIDDEN, ENT_QUOTES). "\");' onmouseover='style.cursor=\"hand\"' title='" . _XOOPS_FORM_ALT_ALTHIDDEN . "'><span class='fa fa-fw fa-user-secret fa-lg' aria-hidden='true'></span></button>"; $code .= "</div></div>";
step3. 接著修改系統DHTML編輯器的js檔新增function,共有1個檔案要進行修改
在 /include/formdhtmltextarea.js 下約133行,在xoopsCodeCode及xoopsCodeText兩個function之間,插入新的function
function xoopsCodeHidden(id, enterHiddenPhrase) { if (enterHiddenPhrase == null) { enterHiddenPhrase ="Enter the content that you want to hidden."; } var selection = xoopsGetSelect(id); if (selection.length > 0){ var text = selection; }else { var text = prompt(enterHiddenPhrase, ""); } var domobj = xoopsGetElementById(id); if ( text != null && text != "" ) { var result = "[hidden]" + text + "[/hidden]"; xoopsInsertText(domobj, result); } domobj.focus(); }
step4. 接下來是修改系統DHTML編輯器的語系檔,共有1個檔案要進行修改
在 /language/tchinese_utf8/formdhtmltextarea.php 下約53行,插入一行新的文字變數
define('_XOOPS_FORM_ALT_CODE', '原始碼'); define('_XOOPS_FORM_ALT_QUOTE', '引用'); define("_XOOPS_FORM_ALT_ALTHIDDEN", "對訪客隱藏內容");
step5. 接著是修改系統共用語系檔,共有1個檔案要進行修改
在 /language/tchinese_utf8/global.php 下約178行,插入一行新的文字變數
define('_ENTERQUOTE', '輸入引用內容'); define('_ENTERTEXTBOX', '輸入文字內容'); define('_ENTERHIDDEN', '請輸入隱藏內容');
最後進後台更新一下template,打完收工,成果如下圖
加入隱藏標籤的編輯器畫面
訪客瀏覧時的畫面