さらにシンプルにするために その2
2008年11月24日
さて、アイテムとスキン・テンプレートの所有者がすべてsuperadminだと結論付けられるようになった状態で、改めてこれらをパースするための現在のコードを眺めてみる。
まずは、viewクラスに記述の3つのパース用メソッドの定義部分から。
3つに共通しているのは、$additional_dataの部分。異なっているのは、パースするソースを指定する部分で、文字列を直接受け渡す場合と、ファイルから読み込む場合がある。加えて、テンプレートとアイテムの場合、$dataという、SQLクエリーから得られたrowデータを保持する変数への参照が引数にある。
&$dataに関しては、スキンでも『&$data=null』のようにしておけばよいので、簡単。問題は、パースするソースを、どのようにして、共通のメカニズムで受け渡すかである。
基本的には、parse_skinメソッドの2つの引数『$skin_or_skinname,$file=null』に、すべてのケースを当てはめればよいだろう。アイテムの場合、1つ目の引数にアイテムを指定し2つ目の引数をnullとすればOK。問題は、テンプレートをどうするかだ。
現在のところ、例えば<%blog(default/index)%>のように記述されている場合、defaultスキンを記述しているディレクトリにある、『template_index』ディレクトリにテンプレート群がファイルとして記述されている。これらが、スキンを呼び出すようにうまく呼び出せるかどうかがポイントで、この仕組みがうまく解決できなければ、スキン・テンプレート・アイテムの統合は、絵に描いた餅ということか。
一日、じっくり考えてみよう。
まずは、viewクラスに記述の3つのパース用メソッドの定義部分から。
function parse_skin($skin_or_skinname,$file=null,$additional_data=array()); function parse_template($tempname,$type,$additional_data=array(),&$data=null); function parse_item($item,$admin=false,$additional_data=array(),&$data=null);
3つに共通しているのは、$additional_dataの部分。異なっているのは、パースするソースを指定する部分で、文字列を直接受け渡す場合と、ファイルから読み込む場合がある。加えて、テンプレートとアイテムの場合、$dataという、SQLクエリーから得られたrowデータを保持する変数への参照が引数にある。
&$dataに関しては、スキンでも『&$data=null』のようにしておけばよいので、簡単。問題は、パースするソースを、どのようにして、共通のメカニズムで受け渡すかである。
基本的には、parse_skinメソッドの2つの引数『$skin_or_skinname,$file=null』に、すべてのケースを当てはめればよいだろう。アイテムの場合、1つ目の引数にアイテムを指定し2つ目の引数をnullとすればOK。問題は、テンプレートをどうするかだ。
現在のところ、例えば<%blog(default/index)%>のように記述されている場合、defaultスキンを記述しているディレクトリにある、『template_index』ディレクトリにテンプレート群がファイルとして記述されている。これらが、スキンを呼び出すようにうまく呼び出せるかどうかがポイントで、この仕組みがうまく解決できなければ、スキン・テンプレート・アイテムの統合は、絵に描いた餅ということか。
一日、じっくり考えてみよう。