DEDE模板中如何執行php指令碼和php變數的使用

2021-09-01 19:50:22 字數 1132 閱讀 1450

在使用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...