ホームページ > バックエンド開発 > PHPチュートリアル > PHP スクリプトを実行し、DEDE テンプレートで PHP 変数を使用する方法

PHP スクリプトを実行し、DEDE テンプレートで PHP 変数を使用する方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 12:37:24
オリジナル
781 人が閲覧しました

DEDE テンプレートで php スクリプトを実行し、php 変数を使用する方法

dede テンプレートを使用する場合、dede に対応する関数がない場合、多くの場合、dede データベースの基礎となるフィールドを直接処理する必要があります。私たちはそれに対処する方法を見つける必要があります。

例: データテーブル addonimages の特定のレコードの typeid フィールドを取り出し、typeid を 2 倍した結果をブラウザに出力したいとします。 (注: ここでの typeid 値は 6 です)

最初は次のように書きました:

<body class="index">
{dede:loop table='dede_addonimages' if='aid=94'}
[field:typeid runphp='yes']
echo @me*2;
[/field:typeid]
{/dede:loop}
</body>
ログイン後にコピー

ブラウザの出力は次のとおりです: 12 6

ここに余分な 6 があるのは、[field:typeid] が最初に内部 php ステートメントを実行し、[/field:typeid] 行に到達すると内部関数を呼び出して直接返すためだと思います。 [ field:typeid] 基になるテンプレートのコンテンツを 12 として直接出力したい場合は、/include/extend.fuc.php ファイル にカスタム関数を追加するだけです。

function abc($val){
    return $val*2;
}
ログイン後にコピー
次に、テンプレートは次のように書き換えられます。

<body class="index">
{dede:loop table='dede_addonimages' if='aid=94'}
[field:typeid function="abc(@me)" /]
{/dede:loop}
</body>
ログイン後にコピー
出力結果は次のようになります: 12

もう 1 つ注意すべき点は、同じテンプレート内の 2 つの PHP コード内の変数は普遍的ではないということです。つまり、1 つの PHP コード内の特定の変数のスコープは短いコードに限定されます。

例:

<body class="index">
{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}
</body>
ログイン後にコピー
出力結果は次のとおりです: 12 6 NULL

上記の PHP スクリプトの変数を後続の PHP スクリプトで使用したい場合、私は一時的な解決策を思いつきました。それは、グローバル変数を使用してこの問題を解決することです。

<body class="index">
{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}
</body>
ログイン後にコピー
出力結果は次のとおりです: 6 12 ([field:typeid] にエコーがないため、6 が直接出力されます)






関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート