Index: branches/version-2_12-dev/data/class/helper/SC_Helper_Transform.php
===================================================================
--- branches/version-2_12-dev/data/class/helper/SC_Helper_Transform.php	(revision 21767)
+++ branches/version-2_12-dev/data/class/helper/SC_Helper_Transform.php	(revision 21775)
@@ -37,4 +37,6 @@
     protected $arrSelectElements;
     protected $html_source;
+    protected $header_source;
+    protected $footer_source;
     protected $search_depth;
 
@@ -56,4 +58,6 @@
         $this->arrSelectElements = array();
         $this->html_source = $source;
+        $this->header_source = NULL;
+        $this->footer_source = NULL;
         $this->search_depth = 0;
 
@@ -61,5 +65,11 @@
             SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG, '', true, 'テンプレートの文字コードがUTF-8ではありません');
         }
-
+        
+        // Smartyのコメントを削除
+        $source = preg_replace(
+            '/<\!--{\*.+?\*\}-->/s',
+            '',
+            $source
+        );
         // JavaScript内にSmartyのタグが存在するものを、コメント形式に置換
         $source = preg_replace_callback(
@@ -81,4 +91,11 @@
         );
 
+        // BODYタグの外側は退避させる
+        if (preg_match('/^(.*?<body[^>]*>)(.+)(<\/body>.*)$/is', $source, $arrMatches)) {
+            $this->header_source = $arrMatches[1];
+            $source = $arrMatches[2];
+            $this->footer_source = $arrMatches[3];
+        }
+        
         $source = '<meta http-equiv="content-type" content="text/html; charset=UTF-8" /><html><body><!--TemplateTransformer start-->'.$source.'<!--TemplateTransformer end--></body></html>';
         @$this->objDOM->loadHTML($source);
@@ -294,7 +311,8 @@
         } elseif ($this->snip_count) {
             $html = $this->objDOM->saveHTML();
-            $html = str_replace($this->arrSmartyTagsSub, $this->arrSmartyTagsOrg, $html);
             $html = preg_replace('/^.*<\!--TemplateTransformer start-->/s', '', $html);
             $html = preg_replace('/<\!--TemplateTransformer end-->.*$/s', '', $html);
+            $html = $this->header_source.$html.$this->footer_source;
+            $html = str_replace($this->arrSmartyTagsSub, $this->arrSmartyTagsOrg, $html);
             return $html;
         } else {
