phpcms 開発者は、phpcms がテンプレートで呼び出すための多数の組み込み変数を提供していることを知っているはずです。たとえば、{$position} {$title} は現在の位置と記事のタイトルを表します。それぞれ。使用すると便利ですが、なぜこれらの変数を使用できるのかと疑問に思わずにはいられません。これらの変数はどのような状況で意味をなすのでしょうか?
実際、これらの問題は phpcms での HTML ファイルの生成プロセスに原因があると考えられます。すべては admin.php から始まります。バックグラウンドで実行するさまざまな操作 (ファイル、画像などの生成など) により、admin.php にさまざまなファイルが含まれます。インクルードされたオブジェクトには、渡されたパラメーターに従ってさまざまなファイルがインクルードされ、テンプレートが呼び出されるまでずっとインクルードされます。途中で渡されたファイルと admin.php 自体が最終的な admin.php を形成します。呼び出すことができる変数は、これらのファイルに含まれる変数です。これは、変数が使用可能かどうかを判断する基準でもあります。これを理解するのは難しくありません。なぜなら、テンプレート ファイルは最終的に admin.php に含まれており、それが呼び出す変数は元々 admin.php に含まれていなかった可能性がありますが、現在は含まれているからです。以下にテンプレート内のカスタムラベルで翻訳する方法を説明します。このタグは「前の記事 次の記事」の機能を実装しており、ラベル名は{tag_前の記事 次の記事}となります。クリックして記事を生成した後のリンクは次のとおりです: http://127.0.0.1/phpcms2007_sp6_gbk/phpcms/admin.php?mod=article&file=createhtml&action=create_show&channelid=1&referer=****タグ コードは次のとおりです:
1 php
2 定義済み (' IN_PHPCMS ' ) または終了 (' アクセスが拒否されました ' ); 4 php
5 グローバル $articleid , $db ; * FROM phpcms_article_1 where 記事 ID< ;' $articleid ' 記事 ID の順に並べ替えます " ;
7 $sqlaft = " SELECT * FROM phpcms_article_1 where 記事 ID>' ' 記事 ID の順に並べ替えます " ;
8 $preart = $db -> get_one( $sqlpre );
9 $afar = $db -> get_one( $sqlaft );
10 if ( ! $preart [ ' title ' ])
11 $preart = $db -> from phpcms_article_1 記事 ID による順序 desc " );
12 if ( ! $afart [ ' title ' ])
13 $afart = $db -> get_one( " SELECT * FROM phpcms_article_1 where Articleid=1 " );
14 $preurl = $preart [ ' リンク URL ' ];
15 $afurl = $afart [ ' リンク URL ' ];
16 $pretitle = $preart [ ' タイトル ' ]; 18 $url = $PHP_SCHEME . PHPCMS_PATH;
19 echo "
$data = ob_get_contents ();
file_put_contents($filename, $data); HTML ファイルの作成と書き込みが完了します。さらに詳しく調べると、template() が template_refresh() を呼び出し、template_refresh() が template_parse() を呼び出して、phpcms のタグを解釈して純粋な PHP を変換していることがわかります。
その後、template() 関数が戻り、ブラウザのバッファ (ob_start() によって開かれる) に出力され、ファイルに埋め込まれた PHP は HTML 形式に変換されます。カスタムタグの場合、template_parse() によって に変換されるため、出力中に phpcms_mytag() 関数が呼び出されます。この関数には、最終的なカスタム ラベル ファイルが含まれます。このようにして、カスタム ラベルのファイルが $articleid と $db を含むファイルと結合されるため、この時点でこれら 2 つの変数をカスタム ラベル ファイルで使用できるようになります。