前回、テンプレートを、user_dir > package 以下に統合した。
で、もう1つ、手間が減らせる方法を思いついたのが、
class_exの統合。
***
早い話、各ページ上のリンクは、html上のphpを指定しており、
その中身が、どうなっているか、というと、
require_once './require.php'; require_once CLASS_EX_REALDIR . 'page_extends/LC_Page_Index_Ex.php'; $objPage = new LC_Page_Index_Ex(); $objPage->init(); $objPage->process();
※/html/index.php
実体はなく、class_exのファイルを読み込んでいるだけで、
LC_Page_Index_Exは、何しているかというと、
親のLC_Page_Indexを呼び出しているだけ。
require_once CLASS_REALDIR . 'pages/LC_Page_Index.php'; class LC_Page_Index_Ex extends LC_Page_Index { function init() { parent::init(); } function process() { parent::process(); } }
※/data/class_extends/page_extends/LC_Page_Index_ex.php
LC_Page_Indexの方を、直接書き換えている人も多いと思うが、
アップデートのことを考えると、
LC_Page_Index_Exを、拡張するのが正しい。
※3.0が出たので、2.13系のアップデートはないけど。
いろいろやっていて、ふと閃いた。
拡張するときは、なにも、LC_Page_Index_Ex.phpでなくても、
index.phpに、LC_Page_Index_Ex.phpを書き足して、
そこで、拡張クラスを書けば良いんじゃない???
つまり、こういうこと。
require_once './require.php'; // require_once CLASS_EX_REALDIR . 'page_extends/LC_Page_Index_Ex.php'; // ※ ↑ 読み込まずに、その実体を、↓にコピー require_once CLASS_REALDIR . 'pages/LC_Page_Index.php'; class LC_Page_Index_Ex extends LC_Page_Index { function init() { parent::init(); } function process() { parent::process(); } } $objPage = new LC_Page_Index_Ex(); $objPage->init(); $objPage->process();
※文中のコメントに書いているとおり。
こうすることで、
_data > class_extends > page_extends を開かなくても、
URLで指し示されたPHPを、直接開けば、編集できるようになるわけだ。
ということで、
と合わせて、
なんで、こういうふうに、元々の設計しなかったんだろう???
PS.
ところどころ、ajaxとかつかってあるが、(特にスマホ・テンプレ)
使いにくくて仕方ない!
PC用とスマホ用と、2つ修正するのは、面倒だが、
フレキシブルテンプレートを入れてみるも、
さらにajaxてんこ盛り+CSSの嵐なので、諦めた・・・・