0

私が作成している CMS のテンプレート ファイルを作成しようとしています。テンプレート ファイルには {username}、ページが index.php ページに含まれたときに置き換えられる通常のテキストなどの変数を含めることができます。

例: インデックス ページ:

<?php include('templates/123/index.php'); ?>

templates/123/index.php ページ

<?php include('header.php'); ?>
Welcome {username}
<?php include('footer.php'); ?>

いくつかの方法を試しました。ただし、コンテンツを変更しようとしているページには PHP コードが含まれているため、常に問題が発生します。私が試したすべての方法は、1) ドキュメント内の PHP タグの開閉が失敗するか、または 2) ドキュメント内の PHP コードを単にエコーアウトするためです。これを達成する方法はありますか?たぶん、ある種のクラスでも?これを安全に達成できるようにしたいだけです。

また、これを使用して、{content1} get のようなカスタム変数を、{column2} {column3} および {column4} と同じように、column1 にあるコンテンツのデータベースからデータを取得するioncubed される php コードに置き換えます。テンプレートの作成を非常に簡単にしようとしています。(そのため、コードをそのためにも機能させたいと思います)

4

2 に答える 2

1

このようなことを行うための私の好ましい方法は、コードを次のように開始することです。

ob_start(function($c) {
    $replacements = array(
        "username"=>"Kolink",
        "rank"=>"Awesome"
    );
    return preg_replace_callback("/{(\w+)}/",function($m) use ($replacements) {
        return isset($replacements[$m[1]]) ? $replacements[$m[1]] : $m[0];
    },$c);
});
于 2013-04-20T05:35:58.617 に答える
0

私が提案する2つのステップ

  1. ファイル「templates/123/index.php」の結果を変数にロードします。PHPスクリプトの実行出力を変数に割り当てる方法については、このリンクを参照してください。
  2. strtr() 関数を使用して、プレースホルダー、つまり {username} を実際の値に置き換えます

これはあなたのニーズを満たすと思います。

于 2013-04-20T05:39:12.847 に答える