クラス継承がどのように機能するかを理解していると仮定すると、答えは「はい」です。PHPはそれをサポートしています。djangoのことはやり過ぎかもしれませんが、とにかくそれを行う方法について、私はあなたに本当に簡単に記入しようとします。
注:ここではコントローラーの使用については説明しません。明らかに、ページがブログの場合、通常のページではなくblogPageオブジェクトを作成します。また、私はあなたのためにこれを最初から書いたので、それが機能することを保証するものではありません..しかし、うまくいけば、それはあなたにいくつかのアイデアを与えるでしょう。
<?php
class Page
{
protected $content_main; // Your main page content.
protected $content_leftbar; // Your left sidebar content.
protected $content_title; // Your content title.
protected $template; // Template data.
Function getTemplate() {
// Logic for determining the template to be used in here.
// Let's say it returns the location of a cached version of the template.
return $template_file_path;
}
Function populateContentBlocks() {
// This populates the $content_BLOCK variables with data using some default
// logic you have for determining where to grab that data from.
}
Function loadPage() {
// Populates variables.
$this->populateContentBlocks();
// Fetches template
include( $this->getTemplate() );
}
} // END class
Class blogPage extends Page {
Function getTemplate() {
// Logic for determining the template to be used in here.
// Let's say it returns the location of a cached version of the template.
// OVERRIDE THE DEFAULT TEMPLATE LOGIC OF THE PAGE WITH WHAT IS RELEVENT TO
// BLOGPAGE.
}
}
?>
テンプレートファイルの例:
<html>
<head>
<title><?php echo $this->content_title; ?></title>
</head>
<body>
<div class="sidebar"><?php echo $this->content_sidebar; ?></div>
<div class="mainContent"><?php echo $this->content_main; ?></div>
</body>
</html>