使 phpBB 3 點選連結可以開啟新的視窗

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

使 phpBB 3 點選連結可以開啟新的視窗

文章 心靈捕手 »

比較 phpBB 3 與 phpBB 2, 點選連結時有個輕微地不同的行為:
在 phpBB 2 當您點選連結的時候, 他們打開新的視窗和請求的頁面.
這個改變在 phpBB 3 是為了一些原因,
但是最重要的是, 為了整個討論區這目標到達 (開新的視窗) 在 XHTML 1.0 是嚴格-生效的.

假如您還想要到獲得這相同行為在您的新 phpBB 3 討論區, 那麼有一些小修改是要做到的,
希望這篇教學足夠解釋細節.

修改自動-偵測的連結

首先, 使得自動-偵測的連結 (沒有使用 URL-BBCode 者) 可以開新的視窗.
#
#-----[ OPEN ]-----
#
includes/functions_content.php

#
#-----[ FIND ]-----
# 約在 592 行
#

代碼: 選擇全部

    $html    = "$whitespace<!-- $tag --><a$class href=\"$url\">$text</a><!-- $tag -->$append";
#
#-----[ REPLACE WITH ]-----
#

代碼: 選擇全部

    if ($type == MAGIC_URL_EMAIL)
    {
        $html    = "$whitespace<!-- $tag --><a$class href=\"$url\">$text</a><!-- $tag -->$append";    
    }
    else 
    {
        $html    = "$whitespace<!-- $tag --><a$class href=\"$url\" onclick=\"window.open(this.href);return false;\">$text</a><!-- $tag -->$append";
    }
BBCodeURL

接下來, 修改你的風格樣板檔案.
#
#-----[ OPEN ]-----
# 假如您在使用 prosilver 風格
#
styles/prosilver/template/bbcode.html

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

代碼: 選擇全部

<!-- BEGIN url --><a href="{URL}" class="postlink">{DESCRIPTION}</a><!-- END url -->
#
#-----[ REPLACE WITH ]-----
#

代碼: 選擇全部

<!-- BEGIN url --><a href="{URL}" onclick="window.open(this.href);return false;" class="postlink">{DESCRIPTION}</a><!-- END url -->
再次幫助 phpBB 讀輸出值

最後但不是最終, 您也要將允許已建立的 HTML 語言輸出可以讓 phpBB 解析.
#
#-----[ OPEN ]-----
#
includes/functions.php

#
#-----[ FIND ]-----
# 約在 2740 行
#

代碼: 選擇全部

      case 'bbcode_htm':
         return array(
            '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
            '#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
            '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
            '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
            '#<!\-\- .*? \-\->#s',
            '#<.*?>#s',
         );
#
#-----[ REPLACE WITH ]-----
#

代碼: 選擇全部

      case 'bbcode_htm':
         return array(
            '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
            '#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&|\?)sid=[0-9a-f]{32})?" onclick="window\.open\(this\.href\);return false;">.*?</a><!\-\- l \-\->#',
            '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)" onclick="window\.open\(this\.href\);return false;">.*?</a><!\-\- \1 \-\->#',
            '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
            '#<!\-\- .*? \-\->#s',
            '#<.*?>#s',
         );
儲存檔案後, 清除論壇快取.

注意! 這個改變不影響已經發表的文章, 您必須編輯它們, 重新送出.

--
資料來源:
http://www.phpbb.com/kb/article/links-o ... w-windows/
最後由 心靈捕手 於 2009-08-03 22:20 編輯,總共編輯了 3 次。
理由: 修改 functions_content.php, 以及增加文末提醒.
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8510
註冊時間: 2004-04-30 01:54
來自: Taiwan

[教學] 解決重新編輯文章時, (已被簡化) 連結失真之方法

文章 心靈捕手 »

以上的修改, 對舊文章中已建立的連結無效 (無法開啟新的視窗);
而且若原來連結過長已被簡化, 則要重新編輯文章時, 連結卻失真.

解決重新編輯文章時, (已被簡化) 連結失真之方法如下:
1. 在檢視文章頁面, 將已被簡化的連結, 按右鍵-複製捷徑, 編輯文章-(刪除原連結) 重新貼上連結後, 送出.
2. 或者, 修改語法:
#
#-----[ OPEN ]-----
#
includes/functions.php

#
#-----[ FIND ]-----
# 約在 2743 行
#

代碼: 選擇全部

      case 'bbcode_htm':
         return array(
            '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
            '#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
            '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
            '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
            '#<!\-\- .*? \-\->#s',
            '#<.*?>#s',
         );
#
#-----[ REPLACE WITH ]-----
#

代碼: 選擇全部

      case 'bbcode_htm':
         return array(
            '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
            '#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&|\?)sid=[0-9a-f]{32})?"(?: onclick="window\.open\(this\.href\);return false;")?>.*?</a><!\-\- l \-\->#',
            '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)"(?: onclick="window\.open\(this\.href\);return false;")?>.*?</a><!\-\- \1 \-\->#',
            '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
            '#<!\-\- .*? \-\->#s',
            '#<.*?>#s',
         );
ps.
目前, 此修改方法, 尚未經原作者 zeroK 認可.
http://www.phpbb.com/community/viewtopi ... 5#p3675375
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8510
註冊時間: 2004-04-30 01:54
來自: Taiwan

[轉貼] (連結型式) 子版面, 預設點選時也開啟新的視窗

文章 心靈捕手 »

如果您希望建立的 (連結型式) 子版面, 預設點選時也開啟新的視窗的話, 那麼可以參考此文修改.

--
好的, 首先備份您的 includes/functions_display.php 然後以文字編輯器開啟此檔.

#
#-----[ FIIND ]-----
# 大約在 203 行
#

代碼: 選擇全部

        else if ($row['forum_type'] != FORUM_CAT)
        {
            $subforums[$parent_id][$forum_id]['display'] = ($row['display_on_index']) ? true : false;
            $subforums[$parent_id][$forum_id]['name'] = $row['forum_name'];
            $subforums[$parent_id][$forum_id]['orig_forum_last_post_time'] = $row['forum_last_post_time'];

            $forum_rows[$parent_id]['forum_topics'] += $row['forum_topics']; 
#
#-----[ REPLACE WITH ]-----
#

代碼: 選擇全部

        else if ($row['forum_type'] != FORUM_CAT)
        {
            $subforums[$parent_id][$forum_id]['display'] = ($row['display_on_index']) ? true : false;
            $subforums[$parent_id][$forum_id]['name'] = $row['forum_name'];
            $subforums[$parent_id][$forum_id]['orig_forum_last_post_time'] = $row['forum_last_post_time'];
            $subforums[$parent_id][$forum_id]['is_link'] = $row['forum_type'] == FORUM_LINK;

            $forum_rows[$parent_id]['forum_topics'] += $row['forum_topics']; 
#
#-----[ FIIND ]-----
# 大約在 303 行
#

代碼: 選擇全部

                    $subforums_list[] = array(
                        'link'        => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $subforum_id),
                        'name'        => $subforum_row['name'],
                        'unread'    => $subforum_unread,
                    ); 
#
#-----[ REPLACE WITH ]-----
#

代碼: 選擇全部

                    $subforums_list[] = array(
                        'link'        => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $subforum_id),
                        'name'        => $subforum_row['name'],
                        'unread'    => $subforum_unread,
                        'is_link'   => $subforum_row['is_link'],
                    ); 
#
#-----[ FIIND ]-----
# 大約在 376 行
#

代碼: 選擇全部

            $s_subforums_list[] = '<a href="' . $subforum['link'] . '" class="subforum ' . (($subforum['unread']) ? 'unread' : 'read') . '">' . $subforum['name'] . '</a>';
#
#-----[ REPLACE WITH ]-----
#

代碼: 選擇全部

            $s_subforums_list[] = '<a ' . ($subforum['is_link'] ? 'onclick="window.open(this.href); return false" ' : '') . 'href="' . $subforum['link'] . '" class="subforum ' . (($subforum['unread']) ? 'unread' : 'read') . '">' . $subforum['name'] . '</a>';
我以為, 這樣子修改後應該就可以了.

--
資料來源:
http://phpbb-tw.net/phpbb/viewtopic.php ... 76#p263876
http://www.phpbb.com/community/viewtopi ... 5#p3888945
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8510
註冊時間: 2004-04-30 01:54
來自: Taiwan

Re: [phpBB3 譯文:KB] 使 phpBB 3 點選連結可以開啟新的視窗

文章 心靈捕手 »

前言:
這篇教學文章主要是延續上一篇文章的問題--
目的: 在瀏覽 viewforum.php 頁面,
點選 '連結' 型式的版面名稱時, 可以開啟新的視窗.


修改方法:
prosilver 風格

開啟
styles/prosilver/template/forumlist_body.html

找到 (約 31 行)

代碼: 選擇全部

					<a href="{forumrow.U_VIEWFORUM}" class="forumtitle">{forumrow.FORUM_NAME}</a><br />
取代成

代碼: 選擇全部

					<!-- IF forumrow.S_IS_LINK --><a href="{forumrow.U_VIEWFORUM}" class="forumtitle" onclick="window.open(this.href); return false;"><!-- ELSE --><a href="{forumrow.U_VIEWFORUM}" class="forumtitle"><!-- ENDIF -->{forumrow.FORUM_NAME}</a><br />
subsilver2 風格

開啟
styles/subsilver2/template/forumlist_body.html

找到 (約 24 行)

代碼: 選擇全部

				<a class="forumlink" href="{forumrow.U_VIEWFORUM}">{forumrow.FORUM_NAME}</a>
取代成

代碼: 選擇全部

				<a class="forumlink" href="{forumrow.U_VIEWFORUM}" onclick="window.open(this.href); return false;">{forumrow.FORUM_NAME}</a>
後記:
1. 修改, 儲存後, 請清除論壇快取.
2. 以 subsilver2 為基礎所修改的風格,
可以

代碼: 選擇全部

target="_blank"
取代

代碼: 選擇全部

onclick="window.open(this.href); return false;"
P.S.
本文並非官方 KB 的文章;
放在這裡, 只因性質雷同.
最後由 心靈捕手 於 2009-01-15 06:58 編輯,總共編輯了 1 次。
理由: 修改 prosilver 風格語法
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8510
註冊時間: 2004-04-30 01:54
來自: Taiwan

修正 functions_content.php

文章 心靈捕手 »

這個修正, 主要是避免文章內容含 "aaa@bb.c" 者, (重新編輯文章) 會出現錯誤.

#
#-----[ OPEN ]-----
#
includes/functions_content.php

#
#-----[ FIND ]-----
# 約在 592 行
#

代碼: 選擇全部

    $html    = "$whitespace<!-- $tag --><a$class href=\"$url\" onclick=\"window.open(this.href);return false;\">$text</a><!-- $tag -->$append";
#
#-----[ REPLACE WITH ]-----
#

代碼: 選擇全部

    if ($type == MAGIC_URL_EMAIL)
    {
        $html    = "$whitespace<!-- $tag --><a$class href=\"$url\">$text</a><!-- $tag -->$append";    
    }
    else 
    {
        $html    = "$whitespace<!-- $tag --><a$class href=\"$url\" onclick=\"window.open(this.href);return false;\">$text</a><!-- $tag -->$append";
    }
P.S.
1. 不清楚原作者 zeroK 是在何時修正的?
2. 第一篇文章已經修正. 這裡出現的 (找到) 代碼, 則是舊的已修改代碼.

--
參考連結:
http://www.phpbb.com/kb/article/links-o ... w-windows/
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
回覆文章

回到「3.0」