Discuz! 是個不錯的玩意, X2 已經算是很棒了,但畢竟還有很多不足的地方,比如 Discuz X 模板中呼叫活動主題時,會在內容輸出的地方自動新增活動圖片、參加人數、剩餘名額等資訊,影響排版美觀,這裡就需要過濾掉活動內容中的上述資訊了!

首先再重複一下 Discuz! 裡的幾種主題型別,即 special 值:

值 主題型別

0 普通

1 投票

2 商品 (交易)

3 懸賞 (問答)

4 活動

5 辯論

當我們在前端進行模板的 DIY 之後,輸出時就需要將之進行解析,看 source/class/block/forum/block_thread.php 檔案中的 getthread() 函式:

if($thread['special'] == 4)

讀取資料庫 DB::table('forum_activity') 活動表中的資料,然後載入模板

include template('common/block_thread');

輸出資料;

接著我們看模板檔案 common/block_thread.htm ,還是看 special=4 的程式碼,即活動主題部分!詳看程式碼註釋!

<!--{elseif $thread[special] == 4}-->
<div>$message</div><!-- 輸出活動主題內容 -->
<!--{if $activity[aid]}--><!-- 輸出活動圖片 -->
<a
href="forum.php?mod=viewthread&tid=$tid" target="_blank"><img
src="$activity[aid]" width="80" alt="$activity[subject]"
/></a>
<!--{else}-->
<a
href="forum.php?mod=viewthread&tid=$tid" target="_blank"><img
src="{IMGDIR}/nophoto.gif" width="80" alt="$activity[subject]"
/></a>
<!--{/if}-->
<p>{lang activity_already} $activity[applynumber]</p><!-- 已參加人數 -->
<!--{if $activity[number]}-->
<p>{lang activity_about_member}: $activity[aboutmember]</p><!-- 剩餘名額 -->
<!--{/if}-->

根據程式碼的註釋,只需要修改模板中的程式碼即可輸出想要的效果!這個活兒自己幹!

分享一段呼叫活動主題的 DIY 模板:

<div id=activity>
[loop]
    <dl>
        <dt><a href="http://url" {target}><img src="{pic}"></a> </dt>
        <dd>
            <I> 活動:</I> <B><a href="http://url" {target}>{title}</a></B>
            <I> 時間:</I>  {dateline}
            <I> 內容:</I> <SPAN><a href="http://url" {target}>{summary}</a></SPAN>
        </dd>
    </dl>
[/loop]
</div>

簡單示例:

Discuz! X2呼叫活動主題並過濾內容中的圖片