在使用dede模板的時候,經常會需要直接對dede資料庫的底層字段進行處理,如果dede中沒有相應的函式的時候,往往就需要我們想辦法來處理了。
舉例:我想取出資料表addonimages中的某一條記錄的typeid這個字段,然後在瀏覽器中輸出typeid乘以2的結果。(注:這裡的typeid值為6)
起初我是這麼寫的:
[field:typeid runphp='yes']
echo @me*2;
[/field:typeid]
瀏覽器輸出結果是:12 6
這裡多出乙個6,我認為是原因是[field:typeid]會先執行內部的php語句,當執行到[/field:typeid]這一行時,它會呼叫內部的函式,直接返回[field:typeid]底層模板的內容,如果想要直接輸出12的話,只能在/include/extend.fuc.php 這個檔案中新增自定義的函式。
function abc($val)
然後模板改寫為:
[field:typeid function="abc(@me)" /]
輸出結果為:12
另外要注意的是,同一模板中的兩段php**裡面的變數不通用,也就是說一段php**中的某一變數,它的作用域只限於該短**。 例:
[field:typeid runphp='yes']
echo $a=@me*2;
[/field:typeid]
var_dump($a);
輸出結果為:12 6 null
如果想在後面的php指令碼中使用上面php指令碼中的變數,我想出乙個臨時性的解決方法,即用全域性變數來解決這個問題。
[field:typeid runphp='yes']
$globals['a']=@me*2;
[/field:typeid]
echo $globals['a'];
輸出結果為:6
12 (因為[field:typeid]中沒有echo,所以直接輸出6)
PHP模板二(仿DEDE)
今天看了下正規表示式,忽然覺得可以把我現在手上的企業建站系統改一下。不過改來改去覺得還是仿dede的方式好一點。於是開始看dede是如何處理標籤的。於是經過一上午的學習,我發現了乙個正規表示式 i但是對我於這個系統來說,那就簡單得多,所以參照這個我做了以下的正規表示式private preg str...
python 中執行linux shell指令碼
subprocess.popen command,shell true 如果command不是乙個可執行檔案,shell true不可省。最簡單的方法是使用class subprocess.popen command,shell true popen類有popen.stdin,popen.stdou...
windows中bat執行python指令碼
1.首先建立乙個text檔案,字尾命名為bat儲存就可以了 2.滑鼠右鍵編輯bat檔案,然後在裡面寫執行語句 echo off e cd e pythonautotest script python mysql change.py pause exit 我這裡是把python指令碼放到了e pyth...