前言
本文將就UCH二次發展這個核心主題,以各種實現的程式碼為主,輔助部分說明概略的講解如何針對UCH進行二次開發。過段時間UCH就開源了,準備到時候再詳細的寫篇UCH機制分析。
順便說下,這篇文件寫在大約兩週以前,但是一直沒有時間整理發布,今天聽說UCH會在最近一段時間開源,到時候再發反而對大家幫助不大,所以決定不再整理,雖然文中一些說明還不詳細,但是已經基本成文。
資料調用
這裡的資料調用是使用UCenter Home內建的資料調用,在後台的「高級應用程式」裡有「資料調用」管理,以下程式碼都是在範本中添加,然後調用資料。
1.站內資料調用
<!--{template data/blocktpl/1}-->
2.站外JS調用
<script language="javascript" type="text/javascript" src="http://www.ccvita.com/js.php?id=1"></script>
block的使用
這個block資料調用和前面的講的資料調用,從資料來源和生成來說是基本類似的,。
eval的使用
合理的使用Ucenter Home模板語法中的eval語法,會在一定程式上降低二次開發的難度。例如:
1.透過eval語法在模板內執行PHP語句
2.透過eval語法引入一個外部PHP檔案
引入外部檔案
備註:透過在範本中引入外部文件,你可做任何你想做的事情。
直接外部文件
do.php的擴展
1.首先,在do.php檔案中加入允許的新方法
即在
$acs = array('login', 'comment', 'wall', ' register', 'lostpasswd', 'swfupload', 'inputpwd',
'sns', 'viewspace', 'relatekw', 'ajax', 'seccode');
之後加
$acs[] = 'dedemo ';
2.然後,在source目錄下新建do_demo.php文件,呼叫位址就是do.php?ac=demo
雖然UCH發布的文件是加密訊息,但是我們從其已經開源的文件中可以得出進行UCH二次開發寶貴的資訊。
例如/source/cron這個目錄下以及source/class_mysql.php檔案都是開源的,我們可以從中找出,對UCH進行二次開發非常有用的一些信息,例如如何進行SQL查詢,透過分析,我們可以寫出以下文件。
< ?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="space.php?uid=$value[uid]&do=blog&id=$value[blogid]">$value[viewnum] 次阅读</a><span class="pipe">|</span><!--{/if}--> <!--{if $value[replynum]}--><a href="space.php?uid=$value[uid]&do=blog&id=$value[blogid]#comment">$value[replynum] 个评论</a><!--{else}-->没有评论<!--{/if}--> </div> </li> <!--{/loop}--> </ul> </div> </div> </div> <!--{template footer}-->
總結
雖然目前的UCH尚未開源,但是在模板介面完全可修改,合理利用上述資料調用機制的情況下,鮮有我們不能實現的頁面效果和資料調用要求。
更多UCenter Home二次開髮指南相關文章請關注PHP中文網!