site_main.tplの解読

テーマ:
前回?だったかな、描画の流れはsite_main.tplを追っていくことになると
書いてたと思います。

まずこのsite_main.tplなんですが、ほぼ全てのページにアクセスした際、
ここが最初に呼び出されるようになってます。


//$objpage内の全てのテンプレート変数をsmartyに格納
$objView->assignobj($this);
//パスとテンプレート変数の呼び出し、実行
$objView->display(SITE_FRAME);

※ SITE_FRAMEはデフォルトでsite_frame.tplです。
  site_frame.tplは様々な宣言をした後、site_main.tplを読み込むだけです。

どこのページのphpファイルからアクセスしても、processメソッド内の最後に
↑の内容が実行されるので、まずはsite_main.tplファイルを読み込んでから、
個別ページのtplファイルが実行されて描画されるイメージですね。


site_main.tplの中身について

まずarrPageLayoutという連想配列がどこで宣言されてるのかですが、
これはSC_Helper_PageLayout.phpのprocessメソッド内で宣言されて
セットされています。

※ arrPageLayout.LeftNaviというSmartyの記述は
   phpファイル内で宣言されたarrPageLayoutという連想配列に
   arrPageLayout['LeftNavi']の要素にアクセスすることを
   意味します。

ここに何が入ってるのか??ということですが、現在のページを
構成するブロック情報が入ってます。

細かいこと書くと長くなるので今回は割愛しますが、このarrPageLayout
という連想配列、現在のページがブロックで構成されているなら、
事前にHelper_PageLayoutクラス内で情報がセットされるのですが、
ブロックを使わない単純なページの場合は情報がありません。

なので

if{ $arrPageLayout.LeftNavi | @count >0 }

というコードの部分ですが、ブロックで構成されるページはif文が
実行されますが、ブロックがないページ,つまり事前にHelper_PageLayoutが
呼び出されないページは実行されません。

※ @countは配列の大きさを返します。
  つまり @count > 0 は配列がなければ
  実行されないことを意味します。


もっと言えば、ブロックで構成されないページは

include file=$header_tpl

include file=$tpl_mainpage

include file=$footer_tpl

このコードだけが実行されることになります。

ちなみにこの$tpl_mainpageというのはアクセスしたphpファイル内で
initメソッドを実行した際にセットされるのが普通です。

残りのsite_main.tplの他の説明はまたいつか~

新年最初の記事は以上です(/・ω・)/

ブログトップへ