首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

UCenter Home 二次開發實戰指南:數據調用、Block、Eval 與擴展機制

     編輯:PHP 綜合知識

前言

UCenter Home (UCH) 作為 Discuz! 生態的社交核心,其二次開發主要圍繞模板層的數據調用與邏輯擴展。本文整理模板標籤、Block 機制、Eval 執行、外部文件引入、do.php 擴展等核心技巧,附完整代碼範例。

一、 內建數據調用標籤

1.1 站內模板調用

<!--{template data/blocktpl/1}-->

後台「高級應用 → 數據調用」建立調用規則 (ID=1),前台模板直接引入渲染結果。

1.2 站外 JS 調用

<script src="https://www.example.com/js.php?id=1"></script>

跨域嵌入最新動態、日誌列表等,適合合作夥伴站點或子域名整合。

二、 Block 通用數據塊

Block 為通用數據片段,支援 SQL 查詢、快取、模板渲染一體化。

2.1 語法結構

<!--{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}-->

2.2 實例:最新 8 篇日誌

<!--{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 表示不快取,每次即時查詢
  • 生產環境建議設 60~300 秒減輕 DB 壓力

三、 Eval 動態執行 PHP

3.1 模板內直接執行

<!--{eval echo '<li class="app-thread"><a href="do.php?ac=demo"><strong>最新日誌演示</strong></a>';}-->

3.2 引入外部 PHP 文件 (最強擴展點)

<!--{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 擴展新動作

  1. 註冊動作:編輯 do.php,在 $acs 陣列追加 'demo'
  2. 建立處理文件:source/do_demo.php,入口自動映射為 do.php?ac=demo

利用已開源的 source/class_mysql.php、source/cron/ 目錄可參考資料庫操作、定時任務寫法。

五、 總結

UCH 雖未完全開源,但模板層完全可控,善用 block、eval include、do.php 擴展三板斧,幾乎能實現所有頁面效果與數據聚合需求,且保持核心代碼不被修方便升級維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved