1 頁 (共 1 頁)

[外掛][原創] 版面參觀模式

發表於 : 2006-06-16 , 17:47
懸壺子
[外掛][原創] 版面參觀模式

--------------------------------------------------------------------------------

這個外掛是我依照伊夢兒的這篇文章之後寫出來的:
http://phpbb-tw.net/phpbb/viewtopic.php?t=19986
寫上[原創]有點不好意思

功能:
1. 新增兩個預設的版面參觀模式供選擇
2. 新開看板的權限就設定成「可參觀,不可閱讀」

第一個功能可以在 控制台 -> 版面管理 -> 權限設定 找到
若不需要第二個功能,請跳過admin_forums.php檔案的修改。

代碼:

代碼: 選擇全部

############################################################## 
## MOD Title: 版面參觀模式 
## MOD Author:  Ernie Yang <ernie.yang@msa.hinet.net> 
## MOD Description: 
##   0. 讓訪客只能瀏覽版面上的主題名稱,無法閱讀文章內容, 
##   1. 新增兩個預設的版面參觀模式供選擇 
##   2. 新開看板的權限就設定成「可參觀,不可閱讀」 
##   ※ 如果不需要第二個功能,請跳過admin_forums.php 
##   http://phpbb-tw.net/phpbb/viewtopic.php?t=19986 
## MOD Version: 1.0.0 
## 
## Installation Level: easy 
## Installation Time: 3 Minutes 
## Files To Edit: viewforum.php 
##                admin/admin_forumauth.php 
##                admin/admin_forums.php 
############################################################## 
## Author Notes: 
## 
############################################################## 
## MOD History: 
## 
##  2003-11-09 v 1.0.0 
## 
############################################################## 
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD 
############################################################## 

# 
#-----[ OPEN ]------------------------------------------ 
# 

viewforum.php 

# 
#-----[ FIND ]------------------------------------------ 
# 

if ( !$is_auth['auth_read'] || !$is_auth['auth_view'] ) 
{ 
   if ( !$userdata['session_logged_in'] ) 
   { 
      $redirect = POST_FORUM_URL . "=$forum_id" . ( ( isset($start) ) ? "&start=$start" : '' ); 
      redirect(append_sid("login.$phpEx?redirect=viewforum.$phpEx&$redirect", true)); 
   } 
   // 
   // The user is not authed to read this forum ... 
   // 
   $message = ( !$is_auth['auth_view'] ) ? $lang['Forum_not_exist'] : sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']); 

   message_die(GENERAL_MESSAGE, $message); 
} 

# 
#-----[ REPLACE WITH ]---------------------------------- 
# 

if ( !$is_auth['auth_view'] ) 
{ 
   if ( !$userdata['session_logged_in'] ) 
   { 
      $redirect = POST_FORUM_URL . "=$forum_id" . ( ( isset($start) ) ? "&start=$start" : '' ); 
      redirect(append_sid("login.$phpEx?redirect=viewforum.$phpEx&$redirect", true)); 
   } 
   // 
   // The user is not authed to read this forum ... 
   // 
   $message = ( !$is_auth['auth_view'] ) ? $lang['Forum_not_exist'] : sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']); 

   message_die(GENERAL_MESSAGE, $message); 
} 

if ( !$is_auth['auth_read'] && $userdata['session_logged_in'] ) 
{ 
   $message = ( !$is_auth['auth_view'] ) ? $lang['Forum_not_exist'] : sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']); 

   message_die(GENERAL_MESSAGE, $message); 
} 

# 
#-----[ OPEN ]------------------------------------------ 
# 

admin/admin_forumauth.php 

# 
#-----[ FIND ]------------------------------------------ 
# 
# 如果有裝全域公告請跳過 

6  => array(AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD), 

# 
#-----[ AFTER, ADD ]------------------------------------ 
# 
# 如果有裝全域公告請跳過 
   7  => array(AUTH_ALL, AUTH_REG, AUTH_REG, AUTH_REG, AUTH_REG, AUTH_REG, AUTH_MOD, AUTH_MOD, AUTH_REG, AUTH_REG), 
   8  => array(AUTH_REG, AUTH_ACL, AUTH_ACL, AUTH_ACL, AUTH_ACL, AUTH_ACL, AUTH_ACL, AUTH_MOD, AUTH_ACL, AUTH_ACL), 

# 
#-----[ FIND ]------------------------------------------ 
# 
# 如果沒有裝全域公告請跳過 

6  => array(AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD, AUTH_MOD), 

# 
#-----[ AFTER, ADD ]------------------------------------ 
\n# 
# 如果沒有裝全域公告請跳過 

   7  => array(AUTH_ALL, AUTH_REG, AUTH_REG, AUTH_REG, AUTH_REG, AUTH_REG, AUTH_MOD, AUTH_MOD, AUTH_REG, AUTH_REG, AUTH_ADMIN), 
   8  => array(AUTH_REG, AUTH_ACL, AUTH_ACL, AUTH_ACL, AUTH_ACL, AUTH_ACL, AUTH_ACL, AUTH_MOD, AUTH_ACL, AUTH_ACL, AUTH_MOD), 


# 
#-----[ FIND ]------------------------------------------ 
# 
$simple_auth_types = array( 

# 
#-----[ IN-LINE FIND ]---------------------------------- 
# 

$lang['Moderators'] . ' [' . $lang['Hidden'] . ']' 

# 
#-----[ IN-LINE AFTER, ADD ]---------------------------- 
# 
, $lang['Public'] . ' [' . $lang['Registered'] . ']', $lang['Private'] . ' [' . $lang['Registered'] . ']' 

# 
#-----[ OPEN ]------------------------------------------ 
# 

admin/admin_forums.php 

# 
#-----[ FIND ]------------------------------------------ 
# 

$forum_auth_ary = array( 
   "auth_view" => AUTH_ALL, 
   "auth_read" => AUTH_ALL, 
   "auth_post" => AUTH_ALL, 
   "auth_reply" => AUTH_ALL, 
   "auth_edit" => AUTH_REG, 
   "auth_delete" => AUTH_REG, 
   "auth_sticky" => AUTH_MOD, 
   "auth_announce" => AUTH_MOD, 
   "auth_vote" => AUTH_REG, 
   "auth_pollcreate" => AUTH_REG 
); 

# 
#-----[ REPLACE WITH ]---------------------------------- 
# 
# 有安裝全域公告請跳過 

$forum_auth_ary = array( 
   "auth_view" => AUTH_ALL, 
   "auth_read" => AUTH_REG, 
   "auth_post" => AUTH_REG, 
   "auth_reply" => AUTH_REG, 
   "auth_edit" => AUTH_REG, 
   "auth_delete" => AUTH_REG, 
   "auth_sticky" => AUTH_MOD, 
   "auth_announce" => AUTH_MOD, 
   "auth_vote" => AUTH_REG, 
   "auth_pollcreate" => AUTH_REG 
); 

# 
#-----[ REPLACE WITH ]----------------------------------- 
# 
# 沒有安裝全域公告請跳過 

$forum_auth_ary = array( 
   "auth_view" => AUTH_ALL, 
   "auth_read" => AUTH_REG, 
   "auth_post" => AUTH_REG, 
   "auth_reply" => AUTH_REG, 
   "auth_edit" => AUTH_REG, 
   "auth_delete" => AUTH_REG, 
   "auth_sticky" => AUTH_MOD, 
   "auth_announce" => AUTH_MOD, 
   "auth_vote" => AUTH_REG, 
   "auth_pollcreate" => AUTH_REG, 
   "auth_globalannounce" => AUTH_MOD 
); 

# 
#-----[ SAVE/CLOSE ALL FILES ]--------------------------- 
# 
# EoM 

完成

[強化] 讓訪客瀏覽版面上的主題名稱,但是無

發表於 : 2006-06-16 , 17:48
懸壺子
[強化] 讓訪客瀏覽版面上的主題名稱,但是無法閱讀文章內容

http://phpbb-tw.net/phpbb/viewtopic.php?t=19986

--------------------------------------------------------------------------------

嚴格說起來,這並不是一支外掛,只是在論壇程式上動一點手腳罷了....(汗)

事情起於這一篇討論:http://phpbb-tw.net/phpbb/viewtopic.php?t=18649
當時我一直覺得納悶,要作到這樣的效果,明明是一件很簡單的事情。
只要到系統管理員控制台設定版面的權限設定,將檢視設為所有會員,將閱讀設為註冊會員,就可以了。
為什麼還是有很多網友反應,訪客點擊進入版面後,並沒有辦法瀏覽主題名稱,而是出現要求登入的畫面....

後來我才知道,問題是出在 phpBB 版本的不同,如果是 2.0.3 的使用者,只要直接依照上面的設定方式,就可以了。
但是如果是 2.0.6 以後的使用者,直接依照上面的設定方式是不行的,必須另外在論壇程式上動一點手腳。
正巧我在 phpBB.com 發現一篇討論,已經有網友找到解決辦法並且發表出來,所以我順便整理一下,給大家作一個參考。


效果:
讓訪客可以瀏覽版面內的主題名稱(標題),但是點擊主題名稱後,並不能夠閱讀文章內容,而是出現要求登入的畫面。
這樣一來,既可以保護版面內的文章不隨意讓訪客閱讀,又可以吸引訪客前來註冊。
很多論壇管理員基於一些理由,偏向只讓註冊會員能夠閱讀到文章的內容,這一點是可以理解的。
但是,如果您連論壇版面內的標題都不讓訪客瀏覽,訪客不知道您的論壇有什麼好東西,值得他們花時間註冊成為會員。
那麼,您又要拿什麼去吸引他們註冊,誘使他們加入您的論壇呢?


修改方法:

代碼: 選擇全部

開啟 viewforum.php ,搜尋: 
\n
代碼: 
!$is_auth['auth_read'] || 

找到後,刪除,儲存。 

開啟 viewtopic.php ,搜尋: 

代碼: 
$redirect = ( isset($post_id) ) ? 

請將這一句中的 isset( 覆蓋為 !empty( ,儲存。



設定方法:
進入系統管理控制台 > 版面管理 > 權限設定,選擇您要設定的版面。
檢視設為所有會員。
閱讀設為註冊會員。

[強化] 訪客只能瀏覽主題名稱 <加上>非公

發表於 : 2006-06-16 , 18:01
懸壺子
[強化] 訪客只能瀏覽主題名稱 <W>非公開區訪客禁看

http://phpbb-tw.net/phpbb/viewtopic.php?t=20668
--------------------------------------------------------------------------------

相關外掛:
伊夢兒:[強化] 讓訪客只能瀏覽版面上的主題名稱,無法閱讀文章內容
http://phpbb-tw.net/phpbb/viewtopic.php?t=19986
\n
這是在敝站發現的問題,如果設定成「非公開」的看板,如果做了上述文章的修改,非公開看板內的標題,照樣一覽無疑。

請做以下修改即可(新裝者請先參考伊夢兒的文章):

打開 viewforum.php
找到 代碼:

代碼: 選擇全部

if ( !$is_auth['auth_view'] ) 
{ 
   if ( !$userdata['session_logged_in'] ) 
   { 
      $redirect = POST_FORUM_URL . "=$forum_id" . ( ( isset($start) ) ? "&start=$start" : '' ); 
      redirect(append_sid("login.$phpEx?redirect=viewforum.$phpEx&$redirect", true)); 
   } 
   // 
   // The user is not authed to read this forum ... 
   // 
   $message = ( !$is_auth['auth_view'] ) ? $lang['Forum_not_exist'] : sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']); 

   message_die(GENERAL_MESSAGE, $message); 
} 
在下面加入 代碼:

代碼: 選擇全部

if ( !$is_auth['auth_read'] && $userdata['session_logged_in'] ) 
{ 
   // 
   // The user is not authed to read this forum ... 
   // 
   $message = ( !$is_auth['auth_view'] ) ? $lang['Forum_not_exist'] : sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']); 

   message_die(GENERAL_MESSAGE, $message); 
} 

並且把非公開看板的「權限設定」改成:
檢視→註冊會員


完成~