tgdiscuz โพสต์ 2012-6-12 17:49:39

วิธีการนำ thread list มาโชว์หน้า portal

แก้ไขครั้งสุดท้ายโดย tgdiscuz เมื่อ 2012-6-12 17:59

หลายคนชอบการนำเสนอในรูปแบบ Tab ของ thread_list แต่ก็สามารถโชว์ได้ที่หน้า forum.php เท่านั้น แต่หลายคนก็หาแนวทางที่จะดึง
ออกมาหน้า portal ให้ดั่งใจ ผมเองก็คนหนึ่งหละ หลังจากหาแนวทางมาหลายแนวทางก็ได้ แนวทางประยุกต์ แบบ iframe ดึงมาเสียเลย
แต่การจะดึงมานั้นต้องปรับแต่งจนเนียนเสียก่อน

ขั้นตอนที่1.
เริ่มจาก ให้ทำการ download ไฟล์ forum.php (จะอยู่ข้างในโพล์เดอร์ discuz ที่เดียวกับไฟล์ index.php) แล้วเปลี่ยนชื่อเป็น shows-slide.php (หรือชื่ออื่นตามที่ต้องการ) แล้วเปิดไฟล์ขึ้นมา แก้ไขในส่วนบรรทัดล่างสุดตรงrequire DISCUZ_ROOT.'./source/module/forum/forum_'.$mod.'.php';แล้วแก้เป็นrequire DISCUZ_ROOT.'./source/module/forum2/forum_'.$mod.'.php';จากโพลเดอร์ forum ก็ดาวโหลดมาที่เครื่องแล้ว อัพข้อมูลข้างในนั้นมาที่โพล์เดอร์ที่สร้างใหม่คือ forum2

ขั้นตอนที่2.
ให้ทำการเปิดไฟล์ forum_index.php ดูในบรรทัดที่ 247 โดยประมาณ แล้วอัพทับไปในโพล์เดอร์ forum2 ที่เราสร้างif($_G['gp_archiver']) {
        include loadarchiver('forum/discuz');
        exit();
}

categorycollapse();
include template('diy:forum/discuz:'.$gid);แล้วให้แก้ discuz ให้เป็นชื่อใหม่คือ discuz2 ก็จะได้ตามโคสif($_G['gp_archiver']) {
        include loadarchiver('forum/discuz2');
        exit();
}

categorycollapse();
include template('diy:forum/discuz2:'.$gid);ขั้นตอนที่3
หลังจากนั้นให้ทำการแก้ไขไฟล์ที่แสดง thread list ในการปรับแต่งก็จะปรับแต่งอยู่ 2 ไฟล์ ด้วยกันคือในส่วนของ

template/default/common เป็นไฟล์ header.htm ให้ทำการ download มาแล้วแก้ชื่อเป็น header2.htm แล้วอัพไป
(ห้ามแก้จาก header.htm โดยตรง)

แล้วก็แก้ไขโคสนี้ทับไป แล้ว save และอัพโหลดไปใน template/default/common<!--{subtemplate common/header_common}-->
        <!--{if defined('CURMODULE') && ($_G['basescript'] == 'forum' || $_G['basescript'] == 'group') && (CURMODULE == 'index' || CURMODULE == 'forumdisplay' || CURMODULE == 'group')}-->$rsshead<!--{/if}-->
        <!--{if $_G['basescript'] == 'forum' || $_G['basescript'] == 'group'}-->
                <!--{if $_G['basescript'] == 'forum' && !empty($_G['cookie']['widthauto']) && empty($_G['disabledwidthauto'])}-->
                        <link rel="stylesheet" id="css_widthauto" type="text/css" href="data/cache/style_{STYLEID}_widthauto.css?{VERHASH}" />
                        <script type="text/javascript">HTMLNODE.className += ' widthauto'</script>
                <!--{/if}-->
                <script type="text/javascript" src="{$_G}forum.js?{VERHASH}"></script>
        <!--{elseif $_G['basescript'] == 'home' || $_G['basescript'] == 'userapp'}-->
                <script type="text/javascript" src="{$_G}home.js?{VERHASH}"></script>
        <!--{elseif $_G['basescript'] == 'portal'}-->
                <script type="text/javascript" src="{$_G}portal.js?{VERHASH}"></script>
        <!--{/if}-->
        <!--{if $_G['basescript'] != 'portal' && $_GET['diy'] == 'yes' && ($_G == 'topic' || $_G) && !empty($_G['style']['tplfile'])}-->
                <script type="text/javascript" src="{$_G}portal.js?{VERHASH}"></script>
        <!--{/if}-->
        <!--{if $_GET == 'yes' && ($_G == 'topic' || $_G) && !empty($_G['style']['tplfile'])}-->
        <link rel="stylesheet" type="text/css" href="data/cache/style_{STYLEID}_css_diy.css?{VERHASH}" />
        <!--{/if}-->
</head>

<body id="nv_{$_G}" class="pg_{CURMODULE}" onkeydown="if(event.keyCode==27) return false;">
       
        <!--{if empty($topic) || $topic}-->



        <!--{hook/global_header}-->
        <!--{/if}-->

        <div id="wp" class="wp">ขั้นตอนที่4.
จากนั้นให้ทำการดาวโหลดไฟล์ discuz.htm มาแล้วแก้ชื่อเป็น discuz2.htm ตามที่เราได้ตั้งค่าในตัวแปลไฟล์ forum_index.php นั้นเอง
แล้วทำการ upload ไปใน template/default/forum

ให้ทำการแก้ไขโคสดังนี้ แล้วก็ save แล้วอัพโหลด ไปยัง template/default/forum<!--{subtemplate common/header2}-->

<!--{subtemplate common/pubsearchform}-->

<div id="ct" class="wp cl{if $_G['setting']['forumallowside']} ct2{/if}">
        <div id="chart" class="bm bw0 cl">
                <!--{if $_G['uid']}--><p class="y"><!--{/if}-->
                <p class="chart">{lang index_today}: <em>$todayposts</em><span class="pipe">|</span>{lang index_yesterday}: $postdata<span class="pipe">|</span>{lang index_posts}: <em>$posts</em><span class="pipe">|</span>{lang index_members}: <em>$_G['cache']['userstats']['totalmembers']</em><!--{if $_G['setting']['lastmember']}--><span class="pipe">|</span>{lang welcome_new_members}: <em><a href="home.php?mod=space&username={echo rawurlencode($_G['setting']['lastmember'])}" target="_blank" class="xi2">$_G['setting']['lastmember']</a></em><!--{/if}--></p>
        </div>
                <!--{hook/index_top}-->ขั้นตอนที่5.
จากนั้นทดสอบรันไฟล์ shows-slide.php ในที่เดียวกับที่เก็บไฟล์ index เช่น http://www.youweb.com/shows-slide.php หรือถ้า discuz อยู่ในโพล์เดอร์เอาใส่ใว้ที่
http://www.youweb.com/discuz/shows-slide.php แบบนี้ จะเห็นว่าเราได้ตัว thread list ที่ขึ้นตามตำแหน่ง <!--{hook/index_top}-->
แนะนำถ้าจะทำแบบนี้ให้ผิดตัว plugin ที่ออกมาพร้อมกันกับ thread list ก่อน



ขั้นตอนที่6.
จากนั้นก็ทดสอบสร้าง Frame ในระบบ Diy ในหน้า portal แล้ว เพิ่ง โมดูล แบบ HTML แล้วใส่โคส iframe ลงไปตามนี้<iframe style="border: 0px none;" src="shows-slide.php" frameborder="0" scrolling="NO" align="top" width="910" height="415"></iframe>

ขั้นตอนที่7.
ให้ทำการเซตค่าใน ปลั๊กอิน ของ Thread List โดยเซตค่าในส่วนของ



เปิดลิงค์กระทู้ในหน้าต่างใหม่ ดังรูป เท่านี้เวลาคลิ๊กข้อมูลก้จะเด้งขึ้นหน้าใหม่ทันที เป็นการเสร็จการนำเอา thread list มาโชว์หน้า portal



ขอปัญญาเกิดแด่ท่าน

ไทยกราฟ ดอท คอม
thaigraph.com

ปล. ก่อนอื่นจะแก้ไขไฟล์ควร backup ไฟล์ของเดิมใว้เสียก่อน และก่อนนำ iframe มาใส่ควร backup หน้าแรก โดยการส่งออกไฟล์ XML
เก็บใว้ในเครื่องเราเสียก่อน เผื่อเกิดข้อผิดพลาดจะได้นำเข้าใหม่ได้ และถ้าบางลิ้งค์ไม่ยอมเปิดหน้าใหม่ควรเพิ่มทำสั่ง target=new ใว้ในส่วนลิ้งค์
เสียก่อน และหลักการนี้สามมารถประยุกต์ใช้ได้กับทุกเวอร์ชั่นของ discuz

ไฟล์ตัวอย่างในการปรับแต่งสามารถอัพโหลดไปใช้ได้เลย

**** ถูกใจ + ด้วยก็ได้นะ ไม่ว่ากัน ****



Tumn โพสต์ 2012-6-12 18:27:57

ขอบคุณมากๆครับ เดวไงว่างๆลองดูsm945dz

tgdiscuz โพสต์ 2012-6-13 08:01:12

ไม่เข้าใจตรงไหนถามได้นะครับ ยินดีให้คำแนะนำครับ {:28_1070:}

Fulangco โพสต์ 2012-7-3 22:00:08

ขั้นตอนที่2.
ให้ทำการเปิดไฟล์ forum_index.php
...เอามาจากตรงไหนเหรอครับ...ผมหาไม่เจออ่ะครับ..

tgdiscuz โพสต์ 2012-7-4 21:03:24

Fulangco ตอบกลับเมื่อ 2012-7-3 22:00 static/image/common/back.gif
ขั้นตอนที่2.
ให้ทำการเปิดไฟล์ forum_index.php
...เอามาจากตรงไ ...

source/module/forum2/ ---- จะอยู่ในนี้ครับ forum2 อันนี้มาจากเรา copy file ข้างใน forum แล้วมาสร้างโพลเดอร์หลอก คือ forum2 นั้นเองครับ แล้วข้างในจะมีไฟล์ forum_index.php แล้วไล่แก้จุดที่มันอ้างอิงตาม ขั้นตอนครับ

Fulangco โพสต์ 2012-7-9 13:58:50

tgdiscuz ตอบกลับเมื่อ 2012-7-4 21:03 static/image/common/back.gif
source/module/forum2/ ---- จะอยู่ในนี้ครับ forum2 อันนี้มาจากเรา copy ...

ขอบคุณมากๆ...เลยครับ...

mtts10448 โพสต์ 2012-7-10 13:34:39

ขอบคุนครับที่กรุณา อิอิ{:1_1:}

tom1011 โพสต์ 2012-7-12 00:36:10

ขอบคุณมากๆครับ

Krai500 โพสต์ 2012-8-1 00:31:11

ขอรายงานน่ะครับ
1. ถ้าเราเพิ่ม plugin อีกตัวเช่น chat มันก็จะแสดงผลผิดเพี้ยน มันจะแสดง chat ขึ้นมาแทน
2. thread list ที่ เว็บบอร์ด ยังอยู่เหมือเดิม ถ้าจะให้หายไปทำได้มั้ยครับ

tgdiscuz โพสต์ 2012-8-10 13:35:25

Krai500 ตอบกลับเมื่อ 2012-8-1 00:31 static/image/common/back.gif
ขอรายงานน่ะครับ
1. ถ้าเราเพิ่ม plugin อีกตัวเช่น chat มันก็ ...

ก็ทำการเรียงลำดับ thread list อยู่อันดับแรกสิครับ ในการเรียงลำดับใน plugin เพราะ iframe กำหนดความสูงให้พอดีกับการแสดง thread list พอดีครับ ถ้าเพิ่ม chat มามันก็ไม่ได้อยู่ใน iframe ครับ
หน้า: [1] 2
ดูในรูปแบบกติ: วิธีการนำ thread list มาโชว์หน้า portal