UCenter Home (UCH) 作為 Discuz! 生態的社交核心,其二次開發主要圍繞模板層的數據調用與邏輯擴展。本文整理模板標籤、Block 機制、Eval 執行、外部文件引入、do.php 擴展等核心技巧,附完整代碼範例。
<!--{template data/blocktpl/1}-->
後台「高級應用 → 數據調用」建立調用規則 (ID=1),前台模板直接引入渲染結果。
<script src="https://www.example.com/js.php?id=1"></script>
跨域嵌入最新動態、日誌列表等,適合合作夥伴站點或子域名整合。
Block 為通用數據片段,支援 SQL 查詢、快取、模板渲染一體化。
<!--{block/sql/SQL語句URL編碼/cachename/快取名/cachetime/秒數}-->
<!--{loop $_SBLOCK['快取名'] $value}-->
<li><a href="space.php?uid=$value[uid]&do=blog&id=$value[blogid]">$value[subject]</a></li>
<!--{/loop}-->
<!--{block/sql/SELECT%20*%20FROM%20uchome_blog%20ORDER%20BY%20dateline%20DESC%20LIMIT%200,8/cachename/test/cachetime/0}-->
<!--{loop $_SBLOCK['test'] $value}-->
<li class="app-thread"><a href="space.php?uid=$value[uid]&do=blog&id=$value[blogid]">$value[subject]</a></li>
<!--{/loop}-->
cachetime=0 表示不快取,每次即時查詢<!--{eval echo '<li class="app-thread"><a href="do.php?ac=demo"><strong>最新日誌演示</strong></a>';}-->
<!--{eval include 'demo.php'}-->
demo.php 範例:
<?php
!defined('IN_UCHOME') && exit('Access Denied');
$query = $_SGLOBAL['db']->query('SELECT * FROM '.tname('blog').' ORDER BY dateline DESC LIMIT 10');
$bloglist = array();
while ($value = $_SGLOBAL['db']->fetch_array($query)) {
$bloglist[] = $value;
}
include template('do_demo');
模板 templates/default/do_demo.htm:
<!--{template header}-->
<div class="side_right">
<div class="wide"><div class="post_list"><ul>
<!--{loop $bloglist $value}-->
<li>
<div class="title">
<h4><a href="space.php?uid=$value[uid]&do=blog&id=$value[blogid]">$value[subject]</a></h4>
<a href="space.php?uid=$value[uid]">$value[username]</a> <span class="time"><!--{date('Y-m-d H:i',$value[dateline])}--></span>
</div>
<div class="status">
<!--{if $value[viewnum]}--><a href="...">$value[viewnum] 次閱讀</a><span class="pipe">|</span><!--{/if}-->
<!--{if $value[replynum]}--><a href="...#comment">$value[replynum] 個評論</a><!--{else}-->沒有評論<!--{/if}-->
</div>
</li>
<!--{/loop}-->
</ul></div></div>
</div>
<!--{template footer}-->
do.php,在 $acs 陣列追加 'demo'source/do_demo.php,入口自動映射為 do.php?ac=demo利用已開源的 source/class_mysql.php、source/cron/ 目錄可參考資料庫操作、定時任務寫法。
UCH 雖未完全開源,但模板層完全可控,善用 block、eval include、do.php 擴展三板斧,幾乎能實現所有頁面效果與數據聚合需求,且保持核心代碼不被修方便升級維護。