DEDE テンプレートで PHP スクリプトを実行するにはどうすればよいですか?
Dede データベースの基礎となるフィールドを直接処理する必要があることがよくあります。dede に対応する関数がない場合は、他のメソッドを使用してそれを実現する必要があります。タイトルにあるように、実行します。 php スクリプトと php 変数については、以下に良い例があります。興味のある友人は、
推奨学習を参照してください:梦Weavercms
dede テンプレートを使用する場合、多くの場合、 dede データベースの基礎となるフィールドを直接処理するためには、対応する関数が dede にない場合、多くの場合、それに対処する方法を見つける必要があります。
例: データテーブル addonimages のレコードの typeid フィールドを取り出し、typeid を 2 倍した結果をブラウザに出力したいとします。 (注: ここでの typeid 値は 6 です)
最初にこれを書きました:
コードは次のとおりです:
{dede:loop table='dede_addonimages' if='aid=94'} [field:typeid runphp='yes'] echo @me*2; [/field:typeid] {/dede:loop}
ブラウザの出力は次のとおりです: 12 6
ここに余分な 6 があります。その理由は、[field:typeid] が最初に内部 php ステートメントを実行するためだと思います。行 [/field:typeid] に到達すると、内部関数を呼び出して戻ります。直接 [ field:typeid] 基になるテンプレートの内容、12 を直接出力したい場合は、/include/extend.fuc.php ファイルにカスタム関数を追加するだけです。
コードは次のとおりです:
function abc($val){ return $val*2; }
次に、テンプレートは次のように書き換えられます:
コードは次のとおりです:
{dede:loop table='dede_addonimages' if='aid=94'} [field:typeid function="abc(@me)" /] {/dede:loop}
出力結果は次のとおりです。 12
さらに、同じテンプレート内の 2 つの PHP コード部分の変数は共通ではないことに注意してください。つまり、1 つの PHP コード部分の特定の変数のスコープは短いものに限定されます。コード。
例:
コードは次のとおりです:
{dede:loop table='dede_addonimages' if='aid=94'} [field:typeid runphp='yes'] echo $a=@me*2; [/field:typeid] {/dede:loop} {dede:php}var_dump($a);{/dede:php}
出力結果は次のとおりです: 12 6 NULL
上記の php スクリプトを使用する場合後続の PHP スクリプト変数では、グローバル変数を使用してこの問題を解決するという一時的な解決策を思いつきました。
コードは次のとおりです:
{dede:loop table='dede_addonimages' if='aid=94'} [field:typeid runphp='yes'] $GLOBALS['a']=@me*2; [/field:typeid] {/dede:loop} {dede:php}echo $GLOBALS['a'];{/dede:php}
出力結果は: 6 12 ([field:typeid] にエコーがないため、6 が直接出力されます)
以上がDEDEテンプレートでPHPスクリプトを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。