PHP SMARTY 樣板引擎
一、修改tadtools
- 下載
 - 解壓縮,將「ckeditor」、「elFinder」、「jquery」、「bootstrap3」、「upload」複製到 /class 底下
 - /class/ck.php
	
<?php
defined('WEB_URL') || die("WEB root path not defined");
class CKEditor {
	public $DirName;
	public $ColName;
	public $CustomConfigurationsPath;
	public $ToolbarSet = "my";
	public $Width = '100%';
	public $Height = 300;
	public $Value;
	public $ContentsCss = array();
	public $demopublickey = "";
	//建構函數
	public function __construct($DirName = "", $ColName = "", $Value = "") {
		//$xoopsModuleConfig  = TadToolsXoopsModuleConfig();
		$this->DirName = $DirName;
		$this->ColName = $ColName;
		$this->Value = $Value;
		// if (!empty($xoopsModuleConfig['uploadcare_publickey'])) {
		// 	$this->set_demopublickey($xoopsModuleConfig['uploadcare_publickey']);
		// }
	}
	//設定自定義設定檔
	public function setCustomConfigurationsPath($path = "") {
		$this->CustomConfigurationsPath = $path;
	}
	//設定自定義工具列
	public function setToolbarSet($ToolbarSet = "") {
		$this->ToolbarSet = $ToolbarSet;
	}
	//設定自定義設寬度
	public function setWidth($Width = "") {
		$this->Width = $Width;
	}
	//設定自定義設高度
	public function setHeight($Height = "") {
		$this->Height = $Height;
	}
	//新增樣式
	public function setContentCss($ContentsCss = "") {
		$this->ContentsCss[] = $ContentsCss;
	}
	public function set_demopublickey($demopublickey = "") {
		$this->demopublickey = $demopublickey;
	}
	//產生編輯器
	public function render() {
		global $xoTheme;
		$_SESSION['DirName'] = $this->DirName;
		// before being fed to the textarea of CKEditor
		$content = str_replace('&', '&', $this->Value);
		$content = str_replace('[', '[', $content);
		$other_css = '';
		if ($this->ContentsCss) {
			$other_css = ",'" . implode("','", $this->ContentsCss) . "'";
		}
		$editor = "
				<script type='text/javascript' src='" . WEB_URL . "/class/ckeditor/ckeditor.js'></script>
              <textarea name='{$this->ColName}' id='editor_{$this->ColName}' class='ckeditor_css'>{$content}</textarea>
              <script type='text/javascript'>
              CKEDITOR.replace('editor_{$this->ColName}' , {
                skin : 'moono' ,
                width : '{$this->Width}' ,
                height : '{$this->Height}' ,
                language : 'zh-TW' ,
                toolbar : '{$this->ToolbarSet}' ,
                contentsCss : ['" . WEB_URL . "/class/bootstrap3/css/bootstrap.css','" . WEB_URL . "/class/ckeditor/plugins/fontawesome/font-awesome/css/font-awesome.min.css'{$other_css}],
								extraPlugins: 'syntaxhighlight,oembed,eqneditor,imagerotate,fakeobjects,widget,lineutils,widgetbootstrap,widgettemplatemenu,pagebreak,fontawesome,codemirror,quicktable',
                filebrowserBrowseUrl : '" . WEB_URL . "/class/elFinder/elfinder.php?type=file&mod_dir=" . $this->DirName . "',
                filebrowserImageBrowseUrl : '" . WEB_URL . "/class/elFinder/elfinder.php?type=image&mod_dir=" . $this->DirName . "',
                filebrowserFlashBrowseUrl : '" . WEB_URL . "/class/elFinder/elfinder.php?type=flash&mod_dir=" . $this->DirName . "',
                filebrowserUploadUrl : '" . WEB_URL . "/class/upload.php?type=file&mod_dir=" . $this->DirName . "',
                filebrowserImageUploadUrl : '" . WEB_URL . "/class/upload.php?type=image&mod_dir=" . $this->DirName . "',
                filebrowserFlashUploadUrl : '" . WEB_URL . "/class/upload.php?type=flash&mod_dir=" . $this->DirName . "',
                qtRows: 10, // Count of rows
                qtColumns: 10, // Count of columns
                qtBorder: '1', // Border of inserted table
                qtWidth: '100%', // Width of inserted table
                qtStyle: { 'border-collapse' : 'collapse' },
                qtClass: 'table table-bordered table-hover table-condensed', // Class of table
                qtCellPadding: '0', // Cell padding table
                qtCellSpacing: '0', // Cell spacing table
                qtPreviewBorder: '1px double black', // preview table border
                qtPreviewSize: '15px', // Preview table cell size
                qtPreviewBackground: '#c8def4' // preview table background (hover)
              } );
              </script>
                <script>CKEDITOR.dtd.\$removeEmpty['span'] = false;</script>
              ";
		return $editor;
	}
}
/*
	$DirName = "prod";
	mk_dir(WEB_PATH . "/uploads/{$DirName}");
	mk_dir(WEB_PATH . "/uploads/{$DirName}/image");
	mk_dir(WEB_PATH . "/uploads/{$DirName}/flash");
	include_once WEB_PATH . "/class/ck.php";
	$fck = new CKEditor($DirName, "content", $row['content']);
	$fck->setHeight(350);
	$row['content'] = $fck->render();
*/
	
 - /class/upload.php
	
<?php
//此檔案是給 ck.php 用的,勿刪
require_once dirname(dirname(__FILE__)).'/head.php';
include_once dirname(__FILE__)."/upload/class.upload.php";
$mdir     = $_SESSION['DirName'];
$path     = WEB_PATH . "/uploads/{$mdir}/{$_GET['type']}/";
$url      = WEB_URL . "/uploads/{$mdir}/{$_GET['type']}/";
$type_arr = array('image', 'file', 'flash');
//判斷是否是非法調用
if (empty($_GET['CKEditorFuncNum'])) {
    mkhtml(1, "", "error");
}
$fn = $_GET['CKEditorFuncNum'];
if (!in_array($_GET['type'], $type_arr)) {
    mkhtml(1, "", "error");
}
$foo = new Upload($_FILES['upload']);
if ($foo->uploaded) {
    // save uploaded image with no changes
    $foo->Process($path);
    if ($foo->processed) {
        $msg = $url . $_FILES['upload']['name'];
        mkhtml($fn, $msg);
    } else {
        $msg = 'error : ' . $foo->error;
        mkhtml($fn, "", $msg);
    }
}
function mkhtml($fn, $fileurl, $message)
{
    $str = '<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction(' . $fn . ', \'' . $fileurl . '\', \'' . $message . '\');</script>';
    exit($str);
}
	
 - 將 /class/elFinder/ 「$LANGCODE = str_replace("-", "_", _LANGCODE); 」替換成 「$LANGCODE = "zh_TW";」
 - 將 /class/elFinder/ 「include_once $GLOBALS['xoops']->path('/modules/system/include/functions.php');」替換成 「」
 - 將 /class/elFinder/ 「../../../mainfile.php」替換成 「../../head.php」
 - 將 /class/elFinder/ 「$xoopsUser」替換成 「$_SESSION['isAdmin']」
 - 將 /class/elFinder/ 「$_SESSION['xoops_mod_name']」替換成 「$_SESSION['DirName']」
 - 將 /class/elFinder/ 「XOOPS_ROOT_PATH」替換成 「WEB_PATH」
 - 將 /class/elFinder/ 「XOOPS_URL」替換成 「WEB_URL」
 - 將 /class/elFinder/ 「/modules/tadtools」替換成 「/class」
 - sqlConfig.php
	
<?php
#取得檔案所在目錄:dirname(__FILE__);
#取得檔案上層目錄:dirname(dirname(__FILE__));
#取得檔案上二層目錄:dirname(dirname(dirname(__FILE__)));
require_once dirname(dirname(dirname(__FILE__))).'/sqlConfig.php';
	
 - 完成下載 :請下載至專案目錄並解壓縮覆蓋