Index: branches/version-2_12-dev/data/class/util/SC_Utils.php
===================================================================
--- branches/version-2_12-dev/data/class/util/SC_Utils.php	(revision 21527)
+++ branches/version-2_12-dev/data/class/util/SC_Utils.php	(revision 21546)
@@ -2177,3 +2177,15 @@
         return $flg;
     }
+    
+   /**
+     * コンパイルファイルを削除します.
+     * @return void
+     */
+    function clearCompliedTemplate() {
+        // コンパイルファイルの削除処理
+        SC_Utils_Ex::deleteFile(COMPILE_REALDIR, false);
+        SC_Utils_Ex::deleteFile(COMPILE_ADMIN_REALDIR, false);
+        SC_Utils_Ex::deleteFile(SMARTPHONE_COMPILE_REALDIR, false);
+        SC_Utils_Ex::deleteFile(MOBILE_COMPILE_REALDIR, false);
+    }
 }
Index: branches/version-2_12-dev/data/class/SC_Display.php
===================================================================
--- branches/version-2_12-dev/data/class/SC_Display.php	(revision 21514)
+++ branches/version-2_12-dev/data/class/SC_Display.php	(revision 21546)
@@ -72,7 +72,8 @@
         }
         $this->assignobj($page);
+        $this->view->setPage($page);
         $this->response->setResposeBody($this->view->getResponse($page->getTemplate()));
     }
-
+    
     /**
      * リロードを行う.
Index: branches/version-2_12-dev/data/class/SC_View.php
===================================================================
--- branches/version-2_12-dev/data/class/SC_View.php	(revision 21514)
+++ branches/version-2_12-dev/data/class/SC_View.php	(revision 21546)
@@ -27,4 +27,6 @@
 
     var $_smarty;
+    
+    var $objPage;
 
     // コンストラクタ
@@ -89,4 +91,6 @@
             }
         }
+        // 各filterをセットします.
+        $this->registFilter();
         $res =  $this->_smarty->fetch($template);
         if (ADMIN_MODE == '1') {
@@ -97,5 +101,49 @@
         return $res;
     }
-
+    
+    /**
+     * Pageオブジェクトをセットします.
+     * @param LC_Page_Ex $objPage 
+     * @return void
+     */
+    function setPage(LC_Page_Ex $objPage) {
+       $this->objPage = $objPage;
+    }
+    
+    /**
+     * Smartyのfilterをセットします. 
+     * @return void
+     */
+    function registFilter() {
+        $this->_smarty->register_prefilter(array(&$this, 'prefilter_transforme'));
+        $this->_smarty->register_outputfilter(array(&$this, 'outputfilter_transforme'));
+    }
+    
+    /**
+     * prefilter用のフィルタ関数。プラグイン用のフックポイント処理を実行
+     * @param string $source ソース
+     * @param Smarty_Compiler $smarty Smartyのコンパイラクラス
+     * @return string $source ソース
+     */
+    function prefilter_transforme($source, &$smarty) {
+        // フックポイントを実行.
+        $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
+        $objPlugin->doAction('prefilterTransforme', array(&$source, $this->objPage));
+        return $source;
+    }
+
+    /**
+     * outputfilter用のフィルタ関数。プラグイン用のフックポイント処理を実行
+     * @param string $source ソース
+     * @param Smarty_Compiler $smarty Smartyのコンパイラクラス
+     * @return string $source ソース
+     */
+    function outputfilter_transforme($source, &$smarty) {
+        // フックポイントを実行.
+        $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
+        $objPlugin->doAction('outputfilterTransforme', array(&$source, $this->objPage));
+        return $source;
+    }
+    
     // テンプレートの処理結果を表示
     function display($template, $no_error = false) {
Index: branches/version-2_12-dev/data/class/pages/LC_Page.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/LC_Page.php	(revision 21514)
+++ branches/version-2_12-dev/data/class/pages/LC_Page.php	(revision 21546)
@@ -121,14 +121,8 @@
 
         // HeadNaviにpluginテンプレートを追加する.
-        $objTemplateTransformList = SC_Plugin_TemplateTransformList::getSingletonInstance();
-        $objTemplateTransformList->setHeadNaviBlocs($this->arrPageLayout['HeadNavi']);
-
-        // plugin側で生成したページがあるかを検証し、ある場合は tpl_mainpage にセットする.
         $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
-        $plugin_tmplpath = $objPlugin->getPluginTemplateCachePath($this);
-        if (file_exists($plugin_tmplpath)) $this->tpl_mainpage = $plugin_tmplpath;
+        $objPlugin->setHeadNaviBlocs($this->arrPageLayout['HeadNavi']);
 
         // スーパーフックポイントを実行.
-        $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
         $objPlugin->doAction('lc_page_process', array($this));
 
Index: branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Plugin.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Plugin.php	(revision 21527)
+++ branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Plugin.php	(revision 21546)
@@ -69,6 +69,7 @@
         // パラメーター管理クラス
         $objFormParam = new SC_FormParam_Ex();
+        $mode = $this->getMode();   
         // パラメーター情報の初期化
-        $this->lfInitParam($objFormParam);
+        $this->lfInitParam($objFormParam, $mode);
         $objFormParam->setParam($_POST);
 
@@ -90,7 +91,6 @@
                         $this->arrErr = $this->installPlugin($plugin_code, $plugin_file_name);
                         if ($this->isError($this->arrErr) === false) {
-                            // テンプレート再生成.
-                            $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
-                            $objPlugin->remakeTemplate();
+                            // コンパイルファイルのクリア処理
+                            SC_Utils_Ex::clearCompliedTemplate();
                             $this->tpl_onload = "alert('プラグインをインストールしました。');";
                         }
@@ -112,7 +112,6 @@
                     // 完了メッセージアラート設定.
                     if ($this->isError($this->arrErr) === false) {
-                        // テンプレート再生成.
-                        $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
-                        $objPlugin->remakeTemplate();
+                        // コンパイルファイルのクリア処理
+                        SC_Utils_Ex::clearCompliedTemplate();
                         $this->tpl_onload = "alert('" . $plugin['plugin_name'] ."を削除しました。');";
                     }
@@ -130,7 +129,6 @@
                     $this->arrErr = $this->enablePlugin($plugin_id, $plugin['plugin_code']);                    
                     if ($this->isError($this->arrErr) === false) {
-                        // テンプレート再生成.
-                        $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
-                        $objPlugin->remakeTemplate();
+                        // コンパイルファイルのクリア処理
+                        SC_Utils_Ex::clearCompliedTemplate();
                         $this->tpl_onload = "alert('" . $plugin['plugin_name'] . "を有効にしました。');";
                     }
@@ -148,7 +146,6 @@
                     $this->arrErr = $this->disablePlugin($plugin_id, $plugin['plugin_code']);                    
                     if ($this->isError($this->arrErr) === false) {
-                        // テンプレート再生成.
-                        $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
-                        $objPlugin->remakeTemplate();
+                        // コンパイルファイルのクリア処理
+                        SC_Utils_Ex::clearCompliedTemplate();
                         $this->tpl_onload = "alert('" . $plugin['plugin_name'] . "を無効にしました。');";
                     }
@@ -172,7 +169,6 @@
                             $this->arrErr = $this->updatePlugin($plugin_code, $update_plugin_file_name, $plugin_code, $objFormParam->getValue('plugin_id'));
                             if ($this->isError($this->arrErr) === false) {
-                                // テンプレート再生成.
-                                $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
-                                $objPlugin->remakeTemplate();
+                                // コンパイルファイルのクリア処理
+                                SC_Utils_Ex::clearCompliedTemplate();
                                 $this->tpl_onload = "alert('プラグインをアップデートしました。');";
                             }
@@ -192,7 +188,6 @@
                     $priority = $objFormParam->getValue('priority');
                     $this->updatePriority($plugin_id, $priority);
-                    // テンプレート再生成.
-                    $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
-                    $objPlugin->remakeTemplate();
+                    // コンパイルファイルのクリア処理
+                    SC_Utils_Ex::clearCompliedTemplate();
                 } else {
                     // エラーメッセージを詰め直す.
@@ -231,13 +226,15 @@
      * パラメーター初期化.
      *
-     * @param object $objFormParam
+     * @param SC_FormParam_Ex $objFormParam
+     * @param string $mode モード
      * @return void
-     * 
-     */
-    function lfInitParam(&$objFormParam) {
+     */
+    function lfInitParam(&$objFormParam, $mode) {
         $objFormParam->addParam('mode', 'mode', INT_LEN, '', array('ALPHA_CHECK', 'MAX_LENGTH_CHECK'));
         $objFormParam->addParam('plugin_id', 'plugin_id', INT_LEN, '', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
         $objFormParam->addParam('plugin_code', 'plugin_code', MTEXT_LEN, '', array('ALPHA_CHECK', 'MAX_LENGTH_CHECK'));
-        $objFormParam->addParam('優先度', 'priority', INT_LEN, '', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
+        if($mode === "priority"){
+            $objFormParam->addParam('優先度', 'priority', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
+        }
     }
 
@@ -245,5 +242,5 @@
      * ファイルパラメーター初期化.
      *
-     * @param object $objUpFile SC_UploadFileのインスタンス.
+     * @param SC_UploadFile_Ex $objUpFile SC_UploadFileのインスタンス.
      * @param string $key 登録するキー.
      * @return void
@@ -738,15 +735,4 @@
     }
 
-//    /**
-//     * テンプレート再生成
-//     *
-//     * @return void
-//     */
-//    function remakeTemplate() {
-//        $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
-//        $objPlugin->remakeAllTemplates(true);
-//        $objPlugin->remakeAllTemplates();
-//    }
-
     /**
      * plugin_idをキーにdtb_pluginのstatusを更新します.
@@ -852,4 +838,5 @@
      *
      * @param string $dir_path 作成するディレクトリのパス
+     * @return void
      */
     function makeDir($dir_path) {
Index: branches/version-2_12-dev/data/class/pages/admin/LC_Page_Admin.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/LC_Page_Admin.php	(revision 21515)
+++ branches/version-2_12-dev/data/class/pages/admin/LC_Page_Admin.php	(revision 21546)
@@ -92,16 +92,10 @@
         if ($_SERVER['PHP_SELF'] !== ROOT_URLPATH . ADMIN_DIR . 'system/plugin.php') {
 
-            // プラグインによってトランスフォームされたテンプレートがあればセットする
+            // HeadNaviにpluginテンプレートを追加する.
             $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
-            $plugin_tmplpath = $objPlugin->getPluginTemplateCachePath($this);
-            if (file_exists($plugin_tmplpath)) $this->tpl_mainpage = $plugin_tmplpath;
+            $objPlugin->setHeadNaviBlocs($this->arrPageLayout['HeadNavi']);
 
             // スーパーフックポイントを実行.
-            $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
             $objPlugin->doAction('lc_page_process', array($this));
-
-            // HeadNaviにpluginテンプレートを追加する.
-            $objTemplateTransformList = SC_Plugin_TemplateTransformList::getSingletonInstance();
-            $objTemplateTransformList->setHeadNaviBlocs($this->arrPageLayout['HeadNavi']);
         }
 
Index: branches/version-2_12-dev/data/class/helper/SC_Helper_Plugin.php
===================================================================
--- branches/version-2_12-dev/data/class/helper/SC_Helper_Plugin.php	(revision 21527)
+++ branches/version-2_12-dev/data/class/helper/SC_Helper_Plugin.php	(revision 21546)
@@ -35,5 +35,7 @@
     // プラグインのIDの配列.
     var $arrPluginIds = array();
-
+    // HeadNaviブロックの配列
+    var $arrHeadNaviBlocsByPlugin = array();
+    
     /**
      * 有効なプラグインのロード. プラグインエンジンが有効になっていない場合は
@@ -285,53 +287,4 @@
 
     /**
-     * 全てのテンプレートを再生成する
-     *
-     * @param boolean $test_mode true の場合、validate のみを行い、実際にテンプレートの再生成は行わない
-     * @return void
-     */
-    function remakeAllTemplates($test_mode = false) {
-        $this->load(); // 最新のデータを読み込みなおす
-        if (!is_writable(PLUGIN_TMPL_CACHE_REALDIR)) {
-            // TODO エラー処理;
-            exit;
-        }
-        // キャッシュテンプレートを削除
-        if ($test_mode === false) {
-            SC_Utils_Ex::deleteFile(PLUGIN_TMPL_CACHE_REALDIR, false);
-        }
-        $objTemplateTransformList = SC_Plugin_TemplateTransformList::getSingletonInstance();
-        $objTemplateTransformList->init();
-        // プラグインのsetTemplateTransformerを実行します.
-        foreach ($this->arrPluginInstances as $objPlugin) {
-            if (method_exists($objPlugin, 'setTemplateTransformer') === true) {
-                // SC_Plugin_TemplateTransformList::arrConfsByTemplatesにトランスフォーム情報をセットします
-                $objPlugin->setTemplateTransformer();
-            }
-        }
-        // SC_Plugin_TemplateTransformList::arrConfsByTemplatesにセットされた情報を元にトランスフォームの実行
-        $objTemplateTransformList->transformAll($test_mode);
-    }
-
-    /**
-     * テンプレートキャッシュファイルのフルパスを返す.
-     *
-     * @param string $tpl_mainpage  返すキャッシュファイルのパスの対象となるテンプレート.
-     * @param object $objPage  ページオブジェクト.
-     */
-    function getPluginTemplateCachePath($objPage) {
-        // main_template の差し替え
-        if (strpos($objPage->tpl_mainpage, SMARTY_TEMPLATES_REALDIR) === 0) {
-            // フルパスで指定された
-            $dir = '';
-            $default_tpl_mainpage = str_replace(SMARTY_TEMPLATES_REALDIR, '', $objPage->tpl_mainpage);
-        } else {
-            // フロントページ or 管理画面を判定
-            $dir = ($objPage instanceof LC_Page_Admin) ? 'admin/' : TEMPLATE_NAME . '/';
-            $default_tpl_mainpage = $objPage->tpl_mainpage;
-        }
-        return PLUGIN_TMPL_CACHE_REALDIR . $dir . $default_tpl_mainpage;
-    }
-
-    /**
      * ブロックの配列から有効でないpluginのブロックを除外して返します.
      *
@@ -353,12 +306,27 @@
     }
 
-    /**
-     * テンプレートの再生成
-     *
+   /**
+     * テンプレートのヘッダに追加するPHPのURLをセットする
+     *
+     * @param string $url PHPファイルのURL
      * @return void
      */
-    function remakeTemplate() {
-        $this->remakeAllTemplates(true);
-        $this->remakeAllTemplates();
+    function setHeadNavi($url) {
+        $this->arrHeadNaviBlocsByPlugin[$url] = TARGET_ID_HEAD;
+    }
+
+    /**
+     * PHPのURLをテンプレートのヘッダに追加する
+     *
+     * @param array|null $arrBlocs  配置情報を含めたブロックの配列
+     * @return void
+     */
+    function setHeadNaviBlocs(&$arrBlocs) {
+        foreach ($this->arrHeadNaviBlocsByPlugin as $key => $value) {
+            $arrBlocs[] = array(
+                'target_id' =>$value,
+                'php_path' => $key
+            );
+        }
     }
 }
Index: branches/version-2_12-dev/data/require_plugin.php
===================================================================
--- branches/version-2_12-dev/data/require_plugin.php	(revision 21500)
+++ branches/version-2_12-dev/data/require_plugin.php	(revision 21546)
@@ -22,6 +22,3 @@
  */
 
-require_once (PLUGIN_ENGINE_REALDIR . 'SC_Plugin_TemplateTransformList.php');
-require_once (PLUGIN_ENGINE_REALDIR . 'SC_Plugin_TemplateTransformList.php');
-require_once (PLUGIN_ENGINE_REALDIR . 'SC_Plugin_TemplateSelector.php');
 require_once (PLUGIN_UPLOAD_REALDIR . 'SC_Plugin_Base.php');
