modxcms-jp / evolution-jp

https://modx.jp/
32 stars 25 forks source link

パーサの処理の流れを改善 #180

Open yama opened 5 years ago

yama commented 5 years ago

現在は

  1. リソース変数(テンプレート変数)
  2. コンフィグ変数
  3. チャンク
  4. スニペット
  5. プレースホルダ(グローバルスコープ)

の順にページ内の変数文字列を処理しているが、それだと想定とは違う順番で処理が進むことが多い。 変数の種類ごとではなく、出てきた順に処理したい。ループを一周回すだけで完了するため既存の問題が解決できる可能性がある。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>[*pagetitle*] - [(site_name)]</title>
</head>
<body>
[[Navi]]
{{header}}
<p>[*content*]</p>
{{footer}}
</body>
</html>

上記のような構成のテンプレートであれば、

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title><?php $modx->parseDocVar('[*pagetitle*]');?>
   - <?php $modx->parseSiteVar('[(site_name)]');?></title>
</head>
<body>
<?php $modx->parseSnippet('[[Navi]]');?>
<?php $modx->parseChunk('{{header}}');?>
<p><?php $modx->parseDocVar('[*content*]');?></p>
<?php $modx->parseChunk('{{footer}}');?>
</body>
</html>

このように展開し、PHPで処理する。