如何在 ACP 製作一個(開啟/關閉)開關

與 phpBB 3.0.x 相關主題。
回覆文章
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8510
註冊時間: 2004-04-30 01:54
來自: Taiwan

如何在 ACP 製作一個(開啟/關閉)開關

文章 心靈捕手 »

如何在 ACP 製作一個(開啟/關閉)開關


很多人發現他們的論壇有某些部份使用了啟用或禁用的外貌,而且他們很喜歡在 ACP 有一個開關可以很容易地來切換它們。下面的文章解釋了這麼做的方法。在這種特殊情況下,會員將被問到啟用或禁用聊天室;然而您可以使用它在許多不同的事情上-當然-您必須視您的需要去修改它。

好吧!讓我們從這裡開始:
  1. 資料庫
    您首先要做的第一件事是在資料庫建立一個新的欄位。這欄位將被輸入 0(禁用)或 1(啟用):

    代碼: 選擇全部

              INSERT INTO phpbb_config (config_name, config_value) VALUES ('enable_chat', '0');
          
    注意!如果在資料庫的資料表中已經有這個欄位,那麼您應該要視您的需要去建立不同的欄位名稱。(例如:當外掛已經建立自己的資料表,但是並無提供「是或否」顯示的方法。)
  2. 建立「開關」
    我們需要做的第二件事是建立「開關」。這可以在「includes/functions.php」檔案中做到。
    --找到--

    代碼: 選擇全部

                 // The following assigns all _common_ variables that may be used at any point in a template.
          
    --之後增加--

    代碼: 選擇全部

              'S_ENABLE_CHAT'      => ($config['enable_chat']) ? true : false ,
          
  3. 設定開關在 ACP 的位置
    現在有了開關以後,我們也需要將它放置在 ACP,以便於當我們需要時可以使用它,對吧?如果外掛沒有存在 ACP 控制,那麼您總是可以將代碼放進「includes/acp/acp_board.php」檔案中。
    --找到--

    代碼: 選擇全部

                    switch ($mode)
                    {
                       case 'settings':
                          $display_vars = array(
                             'title'   => 'ACP_BOARD_SETTINGS',
                             'vars'   => array(
           
    注意兩件事:
    a. case 'settings':
    b. 'title' => 'ACP_BOARD_SETTINGS',
    它實際上告訴您這個特殊的區域為何。
    在這個情況下,它指的是在 ACP 的「Board Settings(討論區設定)」區域。
    假如您想要將開關放在其他的地方,只要瀏覽像是「case 'blahblah':」去放置您的代碼。

    例如:您想要將開關放在「Board features(討論區特色)」區域,正確的位置應該是

    代碼: 選擇全部

                       case 'features':
                          $display_vars = array(
                             'title'   => 'ACP_BOARD_FEATURES',
          
    我希望您已經明白。現在再回頭去編輯...
    --在「includes/acp/acp_board.php」找到--

    代碼: 選擇全部

                                'allow_birthdays'      => array('lang' => 'ALLOW_BIRTHDAYS',      'validate' => 'bool',   'type' => 'radio:yes_no', 'explain' => true),
          
    --之後增加--

    代碼: 選擇全部

              'enable_chat'         => array('lang' => 'ENABLE_CHAT',         'validate' => 'bool',   'type' => 'radio:yes_no', 'explain' => false),
          
    注意「'explain' => false」這部份:
    如果我們設定為「true」,那麼下一步我們必須建立額外的語言項目,做為這個開關的解釋。您不必在「includes/acp/acp_board.php」做任何額外的事 - 它是自動增加的。
  4. 建立語言項目
    因此,現在我們已經建立了開關以及將它放置在 ACP。我們也需要為此建立語言項目。
    --在「language/zh_cmn_hant/acp/board.php」找到--

    代碼: 選擇全部

                 'BOARD_PM_EXPLAIN'         => 'Enable or disable private messaging for all users.',
          
    --之後增加--

    代碼: 選擇全部

              'ENABLE_CHAT'               => '啟動聊天室',
          
    如果之前的步驟我們設定了「'explain' => true」,那麼我們將需要一個額外的語言項目:

    代碼: 選擇全部

              'ENABLE_CHAT_EXPLAIN'               => '選擇「是」,將顯示聊天室;選擇「否」,則隱藏它。',
          
    再次注意!這個語言所輸入的類別,視特殊的語言位置而定。
    在這個情況下,我們增加語言項目在底下的區域:

    代碼: 選擇全部

              // Board Features
              $lang = array_merge($lang, array(
          
    因為不久前,我們在相同的區域增加了開關。
    這不是強制性的作法,但是它將保持您檔案的組織性。 ;)
  5. 在樣板使用開關
    現在,剩下的一件事是使用我們已經建立的開關放進樣板檔案中。
    大多數的外掛有它們自己的樣板檔,而使用底下的方式被包含在已存在的樣板檔中:

    代碼: 選擇全部

              <!-- INCLUDE this_mod_template.html -->
          
    在此,我們假設聊天室已經被包含使用底下的方式:

    代碼: 選擇全部

              <!-- INCLUDE chat_body.html -->
          
    我們可以如底下的方法來做:

    --開啟--
    styles/yourstyle/template/chat_body.html
    --找到第一行--
    --之前增加--

    代碼: 選擇全部

              <!-- IF S_ENABLE_CHAT -->
          
    --找到最後一行--
    --之後增加--

    代碼: 選擇全部

              <!-- ENDIF -->
          
    儲存檔案後,清除論壇快取。
我們已經完成!現在您將能夠顯示或隱藏這個外掛,而不必每次都要編輯您的檔案:
您只要在 ACP 設定「是或否」即可。
我希望您可以發現這篇有用的文章... :D

--
資料來源:
http://www.phpbb.com/kb/article/howto-m ... ch-in-acp/
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
回覆文章

回到「3.0」