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>.*)$/is', $source, $arrMatches)) { + $this->header_source = $arrMatches[1]; + $source = $arrMatches[2]; + $this->footer_source = $arrMatches[3]; + } + $source = ''.$source.''; @$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 {