"網站建置技術文件" 修訂間的差異

出自 NCUCCWiki
前往: 導覽搜尋
(上傳檔案掃毒)
 
(未顯示由 5 位使用者於中間所作的 31 次修訂)
行 50: 行 50:
 
:::$wgUseAjax = true;
 
:::$wgUseAjax = true;
 
:::require_once( 'extensions/CategoryTree/CategoryTree.php' );
 
:::require_once( 'extensions/CategoryTree/CategoryTree.php' );
 +
 +
==加裝 tinymce extensions==
 +
1、將此檔[[image:T.tgz]]下載後,解壓縮到 mediawiki 下的 extensions 資料夾<br>
 +
2、修改MediaWiki設定檔LocalSettings.php,增加以下內容:
 +
:::$wgUseTinymce = true;
 +
:::$wgDefaultUserOptions ['showtoolbar'] = 0;
 +
:::$wgTinymceTheme = "msword";
 +
:::require_once("$IP/extensions/tinymce/TinyMCE_MW.php");
 +
 +
==將登入/登出改為英文==
 +
先到 mediawiki/languages/messages/ 資料夾下<br>
 +
複製 MessagesEn.php 中 # Login and logout pages 區段的內容<br>
 +
在 MessagesZh_tw.php 中 取代原本的 #Login and logout pages 區段的內容<br>
 +
即可將 login/logout 相關文字改為英文 (包括登入/註冊頁面)
 +
 +
==在首頁加上熱點頁面的前十名==
 +
先新增一個 template 接著進入資料庫<br/>
 +
在 recentchanges、revision、text 這三個 table 中找到剛剛新增的 template 的相對應欄位<br/>
 +
分別將 rc_id、rev_text_id、old_id 記下來<br/>
 +
寫一隻 php 程式進入資料庫 `page` 這個 table 抓出 page_namespace 為 0 的資料<br/>
 +
按照 page_counter 做遞減排序,即可得到熱點頁面的排名<br/>
 +
    $sql = "SELECT * FROM `page` WHERE page_namespace='0' and `page_title` NOT IN ('".implode("','",$black_list)."')
 +
    ORDER BY page_counter DESC LIMIT 0,10";
 +
將找到的資料整理後 UPDATE recentchanges、revision、text 這三個 table<br/>
 +
  $list .= $i . '. [['.$res['page_title'].']]('.number_format($res['page_counter']).'次瀏覽)';
 +
分別更新 rc_new_len  rev_len  old_text<br/>
 +
  "UPDATE `text` SET `old_text` = '".$list."' WHERE `old_id`=''";
 +
  "UPDATE `revision` SET `rev_len` = '".strlen($list)."' WHERE `rev_text_id`=''";
 +
  "UPDATE `recentchanges` SET `rc_new_len` = '".strlen($list)."' WHERE `rc_id`=''";
 +
接著在首頁 include 剛剛新增的 template<br/>
 +
熱點頁面就會顯示在首頁了<br/>
 +
將此 php 程式寫入 crontable 在每日 0 點 1 分時執行,所以每天將更新一次前十名<br/>
 +
只要更改 crontable 的設定就可以修改更新的頻率<br/>
 +
 +
==修改 watchlist==
 +
修改 extensions/AutoWatch.php,增加註解<br />
 +
  //    if (      $article->mTitle->isTalkPage ()){
 +
          $eTitle="Talk Page changed or created in Wiki  - ".$article->mTitle->getTalkNsText().':'.$article->mTitle->getDBkey();
 +
          $eBody=$article->mTitle->GetFullURL();
 +
          $user->sendMail($eTitle, $eBody ) ;
 +
  //    }
 +
==嵌入 mp3檔案==
 +
安裝擴充套件:<br>
 +
至http://www.mediawiki.org/wiki/Extension:Mp3<br>
 +
複製程式碼,並儲存為mp3.php,置於{mediawiki}/extensions/}<br>
 +
將以下檔案下載到{mediawiki}/extensions/</br>
 +
http://www.estvideo.com/dew/media/dewplayer.swf<br>
 +
在LocalSettings.php 檔尾加入include("extensions/mp3.php");<br>
 +
修改允許上載的mp3檔案類型(.mp3)<br>
 +
$wgFileExtensions = array('gif', 'jpg', 'swf', 'doc', ‘ppt’, ‘xls’, ‘mp3’ );<br>
 +
在文章中的編輯語法</br>
 +
<mp3>uploaded filename.mp3 or external URL</mp3><br>
 +
或</br>
 +
<mp3>uploaded filename.mp3 or external URL|download</mp3><br>
 +
 +
==嵌入 Youtube影片==
 +
至http://www.mediawiki.org/wiki/Extension:VideoFlash<br>
 +
複製程式碼,並儲存為videoflash.php,置於{mediawiki}/extensions/<br>
 +
打開MediaWiki根目錄裡的 LocalSettings.php ,在這個PHP檔內的最後一行下面加入以下程式碼,並存檔.<br>
 +
require_once("extensions/videoflash.php");<br>
 +
之後,就可以在MediaWiki的頁面中,貼上以下語法,直接嵌入YOUTUBE的影音<br>
 +
在wiki頁面中語法<videoflash>youtube影片</videoflash><br>
 +
備註:youtube網址為v=那一字串<br>
 +
 +
==設定不同的 namespace 有不同的群組權限==
 +
* 安裝 Lockdown 這個 extension
 +
* require_once( "$IP/extensions/Lockdown/Lockdown.php" );
 +
* $wgExtraNamespaces[100] = 'Private';
 +
* $wgExtraNamespaces[101] = 'Private_talk';
 +
* #restrict "read" permission to logged in users
 +
* $wgNamespacePermissionLockdown[100]['read'] = array('user');
 +
* $wgNamespacePermissionLockdown[101]['read'] = array('user');
 +
* #設定 group1,sysop 可以有全部的權限
 +
* $wgNamespacePermissionLockdown[100]['*'] = array('group1','sysop');
 +
* $wgNamespacePermissionLockdown[101]['*'] = array('group1','sysop');
 +
* #prevent inclusion of pages from that namespace
 +
* $wgNonincludableNamespaces[] = 100;
 +
* $wgNonincludableNamespaces[] = 101;
 +
 +
==設定上傳檔案的不同群組權限==
 +
* 安裝 NSFileRepo 這個 extension
 +
* 同時搭配 Lockdown 設定不同的 namespace 給不同的群組,即可限定所上傳的檔案僅限定為某些群組可以 access
 +
* [[File:Project:Filename.txt]]
 +
* [[Image:Project:Filename.jpg]]
 +
* [[Media:Project:Filename.pdf]]
 +
* 其中 GlobalFuncions.php 可能要做修改
 +
 +
==加裝 WhoIsWatching ==
 +
* http://www.mediawiki.org/wiki/Extension:WhoIsWatching
 +
* 利用 wiki  撰寫會議,需要另外以email 通知與會者,會議紀錄,利用這個 extension可以讓撰寫會議紀錄者, 直接將與會者名單加入 watching 的名單中, 利用系統的自動通知,達到告知的目的.
 +
* 原始的 WhoIsWatching 是0.9版, 運用在Mediawiki 1.15.1 有些狀況,修改部份程式碼如下:
 +
* 加上 $wgUser 為了判斷只有 sysop 群組才可以將別人加入 watching list 中,不修改時, 原有功能是所有人都可以加其他人進入 watchinglist 中
 +
<pre>
 +
new:    global $wgUser, $wgRequest, $wgOut, $wgCanonicalNamespaceNames, $whoiswatching_nametype, $whoiswatching_allowaddingpeople;
 +
old:    global $wgRequest, $wgOut, $wgCanonicalNamespaceNames, $whoiswatching_nametype, $whoiswatching_allowaddingpeople;
 +
 +
new:    if ($whoiswatching_allowaddingpeople && (in_array('sysop', $wgUser->getGroups())) )
 +
old:    if ($whoiswatching_allowaddingpeople)
 +
</pre>
 +
* 不知為何無法取得 $u->getID, 所以改用 $row->user_id
 +
<pre>
 +
new:    $res = $dbr->select( 'user', '*', '', __METHOD__);
 +
old:    $res = $dbr->select( 'user', 'user_name', '', __METHOD__);
 +
 +
new:    //$users[strtolower($u->getRealName())] = $u->getID();
 +
        if (($whoiswatching_nametype=='UserName') || ($row->user_real_name=='')) {
 +
              $users[strtolower($row->user_name)] = $row->user_id;
 +
        } else {
 +
              $users[strtolower($row->user_real_name)] = $row->user_id;
 +
        }
 +
old:    $users[strtolower($u->getRealName())] = $u->getID();
 +
</pre>
 +
==在每一頁加上notice==
 +
* 在你的網頁編輯此頁即可  MediaWiki:Sitenotice
 +
 +
==將外部網頁嵌入wiki頁面==
 +
 +
至http://www.mediawiki.org/wiki/Extension:Anysite<br>
 +
下載程式碼,並儲存為anywebsite.php,置於{mediawiki}/extensions/內<br>
 +
打開MediaWiki根目錄裡的 LocalSettings.php ,在這個PHP檔內的最後一行下面加入以下程式碼,並存檔.<br>
 +
include("extensions/anywebsite.php"); <br>
 +
之後,就可以在MediaWiki的頁面中,貼上以下語法,直接嵌入外部網頁頁面<br>
 +
<anyweb>外部網頁網址</anyweb><br>
 +
備註:內嵌大小可在anywebsite.php 內的
 +
$width =數字;
 +
$height =數字;
 +
調整適當大小
 +
<br>
 +
 +
==移動wiki目錄及更換名稱==
 +
*備份: cp -R ./source ./source_back
 +
*移動: mv ./source ./target
 +
*更改設定: vim ./target/LocalSettings.php
 +
**$wgSitename = "target";
 +
**$wgScriptPath = "target";
 +
*ps: 檔案連結更新可能有點慢...
 +
 +
==上傳檔案掃毒==
 +
*安裝clamav
 +
*更改設定: vim LocalSettings.php
 +
**$wgAntivirus = "clamav";

於 2010年6月4日 (五) 08:19 的最新修訂

開放以LDAP帳號登入認證

1、在 /usr/local/etc/openldap/ldap.conf 中加上一行

TLS_REQCERT never

2、修改MediaWiki設定檔LocalSettings.php,增加以下內容:

require_once( 'extensions/LdapAuthentication.php');
$wgAuth = new LdapAuthenticationPlugin();
$wgLDAPDomainNames = array("Portal");
$wgLDAPEncryptionType = array('Portal' => 'ssl');
$wgLDAPServerNames = array("Portal"=>"140.115.17.30");
$wgLDAPSearchStrings = array("Portal"=>"uid=USER-NAME,ou=People,dc=cc,dc=ncu");$wgLDAPUseLocal = true;
$wgLDAPAddLDAPUsers = false;
$wgLDAPUpdateLDAP = false;
$wgLDAPMailPassword = false;
$wgLDAPRetrievePrefs = false;
$wgMinimalPasswordLength = 1;

開放上傳檔案,並設限檔案副檔名類別

1、修改MediaWiki設定檔LocalSettings.php,增加以下內容:

$wgEnableUploads = true;
$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'doc', 'xls', 'ppt', 'pdf', 'docx', 'xlsx', 'pptx', 'vsd', 'pps' );
$wgFileBlacklist = array('html', 'htm', 'js', 'jsb','php', 'phtml', 'php3', 'php4', 'phps','shtml', 'jhtml', 'pl', 'py', 'cgi','exe', 'scr', 'dll', 'msi', 'vbs', 'bat', 'com', 'pif', 'cmd', 'vxd', 'cpl' );

禁止一般使用者建立新帳號

1、修改MediaWiki設定檔LocalSettings.php,增加以下內容:

$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['sysop']['createaccount'] = true;

設定只有登入系統的使用者,才有權利編輯頁面

1、修改MediaWiki設定檔LocalSettings.php,增加以下內容:

$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['user']['edit'] = true;

1、先將計中logo圖檔,上傳放置於mediawiki\skins\wiki.gif
2、修改MediaWiki設定檔LocalSettings.php,增加以下內容:

$wgLogo="https://wiki.cc.ncu.edu.tw/mediawiki/skins/wiki.gif";

設定正確的時區顯示

1、修改MediaWiki設定檔LocalSettings.php,增加以下內容:

$wgLocaltimezone="Asia/Taipei";
$wgLocalTZoffset=date("Z")/60;

網址從/mediawiki/index.php/ 改成 /wiki/ 式網址,以達成縮短網址

1、修改MediaWiki設定檔LocalSettings.php,增加以下內容:

$wgArticlePath = "/wiki/$1";

2、修改/usr/local/etc/apache22/httpd.conf,增加以下內容:

Alias /wiki /home/www/mediawiki/index.php
Alias /index.php /home/www/mediawiki/index.php

加裝 template: languages extensions,以支援英文版 content頁面編輯

1、將此檔檔案:P.tgz下載後,解壓縮到 mediawiki 下的 extensions 資料夾
2、修改MediaWiki設定檔LocalSettings.php,增加以下內容:

require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" );

加裝 category tree extensions,以支援 subcategory

1、將此檔檔案:C.tgz下載後,解壓縮到 mediawiki 下的 extensions 資料夾
2、修改MediaWiki設定檔LocalSettings.php,增加以下內容:

$wgUseAjax = true;
require_once( 'extensions/CategoryTree/CategoryTree.php' );

加裝 tinymce extensions

1、將此檔檔案:T.tgz下載後,解壓縮到 mediawiki 下的 extensions 資料夾
2、修改MediaWiki設定檔LocalSettings.php,增加以下內容:

$wgUseTinymce = true;
$wgDefaultUserOptions ['showtoolbar'] = 0;
$wgTinymceTheme = "msword";
require_once("$IP/extensions/tinymce/TinyMCE_MW.php");

將登入/登出改為英文

先到 mediawiki/languages/messages/ 資料夾下
複製 MessagesEn.php 中 # Login and logout pages 區段的內容
在 MessagesZh_tw.php 中 取代原本的 #Login and logout pages 區段的內容
即可將 login/logout 相關文字改為英文 (包括登入/註冊頁面)

在首頁加上熱點頁面的前十名

先新增一個 template 接著進入資料庫
在 recentchanges、revision、text 這三個 table 中找到剛剛新增的 template 的相對應欄位
分別將 rc_id、rev_text_id、old_id 記下來
寫一隻 php 程式進入資料庫 `page` 這個 table 抓出 page_namespace 為 0 的資料
按照 page_counter 做遞減排序,即可得到熱點頁面的排名

   $sql = "SELECT * FROM `page` WHERE page_namespace='0' and `page_title` NOT IN ('".implode("','",$black_list)."')
   ORDER BY page_counter DESC LIMIT 0,10";

將找到的資料整理後 UPDATE recentchanges、revision、text 這三個 table

  $list .= $i . '. [['.$res['page_title'].']]('.number_format($res['page_counter']).'次瀏覽)';

分別更新 rc_new_len rev_len old_text

 "UPDATE `text` SET `old_text` = '".$list."' WHERE `old_id`=";
 "UPDATE `revision` SET `rev_len` = '".strlen($list)."' WHERE `rev_text_id`=";
 "UPDATE `recentchanges` SET `rc_new_len` = '".strlen($list)."' WHERE `rc_id`=";

接著在首頁 include 剛剛新增的 template
熱點頁面就會顯示在首頁了
將此 php 程式寫入 crontable 在每日 0 點 1 分時執行,所以每天將更新一次前十名
只要更改 crontable 的設定就可以修改更新的頻率

修改 watchlist

修改 extensions/AutoWatch.php,增加註解

 //     if (       $article->mTitle->isTalkPage ()){
         $eTitle="Talk Page changed or created in Wiki  - ".$article->mTitle->getTalkNsText().':'.$article->mTitle->getDBkey();
         $eBody=$article->mTitle->GetFullURL();
         $user->sendMail($eTitle, $eBody ) ;
 //     }

嵌入 mp3檔案

安裝擴充套件:
至http://www.mediawiki.org/wiki/Extension:Mp3
複製程式碼,並儲存為mp3.php,置於{mediawiki}/extensions/}
將以下檔案下載到{mediawiki}/extensions/</br> http://www.estvideo.com/dew/media/dewplayer.swf
在LocalSettings.php 檔尾加入include("extensions/mp3.php");
修改允許上載的mp3檔案類型(.mp3)
$wgFileExtensions = array('gif', 'jpg', 'swf', 'doc', ‘ppt’, ‘xls’, ‘mp3’ );
在文章中的編輯語法</br> <mp3>uploaded filename.mp3 or external URL</mp3>
或</br> <mp3>uploaded filename.mp3 or external URL|download</mp3>

嵌入 Youtube影片

至http://www.mediawiki.org/wiki/Extension:VideoFlash
複製程式碼,並儲存為videoflash.php,置於{mediawiki}/extensions/
打開MediaWiki根目錄裡的 LocalSettings.php ,在這個PHP檔內的最後一行下面加入以下程式碼,並存檔.
require_once("extensions/videoflash.php");
之後,就可以在MediaWiki的頁面中,貼上以下語法,直接嵌入YOUTUBE的影音
在wiki頁面中語法<videoflash>youtube影片</videoflash>
備註:youtube網址為v=那一字串

設定不同的 namespace 有不同的群組權限

  • 安裝 Lockdown 這個 extension
  • require_once( "$IP/extensions/Lockdown/Lockdown.php" );
  • $wgExtraNamespaces[100] = 'Private';
  • $wgExtraNamespaces[101] = 'Private_talk';
  • #restrict "read" permission to logged in users
  • $wgNamespacePermissionLockdown[100]['read'] = array('user');
  • $wgNamespacePermissionLockdown[101]['read'] = array('user');
  • #設定 group1,sysop 可以有全部的權限
  • $wgNamespacePermissionLockdown[100]['*'] = array('group1','sysop');
  • $wgNamespacePermissionLockdown[101]['*'] = array('group1','sysop');
  • #prevent inclusion of pages from that namespace
  • $wgNonincludableNamespaces[] = 100;
  • $wgNonincludableNamespaces[] = 101;

設定上傳檔案的不同群組權限

加裝 WhoIsWatching

  • http://www.mediawiki.org/wiki/Extension:WhoIsWatching
  • 利用 wiki 撰寫會議,需要另外以email 通知與會者,會議紀錄,利用這個 extension可以讓撰寫會議紀錄者, 直接將與會者名單加入 watching 的名單中, 利用系統的自動通知,達到告知的目的.
  • 原始的 WhoIsWatching 是0.9版, 運用在Mediawiki 1.15.1 有些狀況,修改部份程式碼如下:
  • 加上 $wgUser 為了判斷只有 sysop 群組才可以將別人加入 watching list 中,不修改時, 原有功能是所有人都可以加其他人進入 watchinglist 中
 new:    global $wgUser, $wgRequest, $wgOut, $wgCanonicalNamespaceNames, $whoiswatching_nametype, $whoiswatching_allowaddingpeople;
 old:    global $wgRequest, $wgOut, $wgCanonicalNamespaceNames, $whoiswatching_nametype, $whoiswatching_allowaddingpeople;

 new:    if ($whoiswatching_allowaddingpeople && (in_array('sysop', $wgUser->getGroups())) )
 old:    if ($whoiswatching_allowaddingpeople)
  • 不知為何無法取得 $u->getID, 所以改用 $row->user_id
 new:    $res = $dbr->select( 'user', '*', '', __METHOD__);
 old:    $res = $dbr->select( 'user', 'user_name', '', __METHOD__);

 new:    //$users[strtolower($u->getRealName())] = $u->getID();
         if (($whoiswatching_nametype=='UserName') || ($row->user_real_name=='')) {
              $users[strtolower($row->user_name)] = $row->user_id;
         } else {
              $users[strtolower($row->user_real_name)] = $row->user_id;
         }
 old:    $users[strtolower($u->getRealName())] = $u->getID();

在每一頁加上notice

  • 在你的網頁編輯此頁即可 MediaWiki:Sitenotice

將外部網頁嵌入wiki頁面

至http://www.mediawiki.org/wiki/Extension:Anysite
下載程式碼,並儲存為anywebsite.php,置於{mediawiki}/extensions/內
打開MediaWiki根目錄裡的 LocalSettings.php ,在這個PHP檔內的最後一行下面加入以下程式碼,並存檔.
include("extensions/anywebsite.php");
之後,就可以在MediaWiki的頁面中,貼上以下語法,直接嵌入外部網頁頁面
<anyweb>外部網頁網址</anyweb>
備註:內嵌大小可在anywebsite.php 內的 $width =數字; $height =數字; 調整適當大小

移動wiki目錄及更換名稱

  • 備份: cp -R ./source ./source_back
  • 移動: mv ./source ./target
  • 更改設定: vim ./target/LocalSettings.php
    • $wgSitename = "target";
    • $wgScriptPath = "target";
  • ps: 檔案連結更新可能有點慢...

上傳檔案掃毒

  • 安裝clamav
  • 更改設定: vim LocalSettings.php
    • $wgAntivirus = "clamav";