内部邀請碼:C8E245J (不寫邀請碼,沒有現金送)
國内私募機構九鼎控股打造,九鼎投資是在全國股份轉讓系統挂牌的公衆公司,股票代碼為430719,為“中國PE第一股”,市值超1000億元。
--------------------------------------------------------
寫過ecshop模闆的人都曉得,他們是用所謂的dwt的檔案來嵌套lbi檔案進行模闆的彼此調用。在咱們調取資料的時分,ecshop的默許模闆隻提供給咱們幾個簡略的句子進行調用,那麼有沒有辦法能夠把這個精簡的cls_template類添加其他的句子呢?
首要斷定版别:ECShop v2.7.3
通過近一天對ecshop程式的研讨,發現這個所謂的cls_template類,其實是一個精簡版的smarty,而且值得幸虧的是,這個cls_template類沒有包括其他的檔案。那麼咱們完全能夠将官方smarty直接拿來用。斷定了這一點,剩餘的就是看ECShop在哪裡運用這個cls_template類了。
翻開index.php,咱們發現他裡邊有這樣一句話:
require(dirname(__FILE__) . '/includes/init.php');
是以咱們找到這個檔案,找到創立的那個cls_template類,代碼如下:
require(ROOT_PATH . 'includes/cls_template.php');
$smarty = new cls_template;
這裡發現他們創立了一個smarty的一個目标,其實咱們寫的模闆中一切能用的标簽都是用這個的。
我這裡不說廢話了,直接給辦法了。
仿制一份init.php 為 init_x.php ,在根目錄的 index.php 中,将:
改為:
require(dirname(__FILE__) . '/includes/init_x.php');
即可。原因是還有其他地方運用了init.php,直接修正的話,會形成不行預知的成果。
如今去官方下載下傳一個smarty模闆,這裡用的是2.6的版别(3.1的版别試過,有錯。估量ecshop其時用的是2.6相容的,别問我為啥。),放在include的檔案夾裡,而且在init_x.php中包括當時的原生smarty類而且用Smarty類交換之前的cls_template類,代碼如下:
/* 獲得當時ecshop地點的根目錄 */
define('ROOT_PATH', str_replace('includes/init_x.php', '', str_replace('\\', '/', __FILE__)));
/* 創立 Smarty 目标。*/
require(ROOT_PATH . 'includes/Smarty-2.6.27/libs/Smarty.class.php');
$smarty = new Smarty;
$smarty->cache_lifetime = $_CFG['cache_time'];
$smarty->template_dir = ROOT_PATH . 'themes/' . $_CFG['template'];
$smarty->cache_dir = ROOT_PATH . 'temp/caches';
$smarty->compile_dir = ROOT_PATH . 'temp/compiled';
這裡注重途徑和類名的修正。還有就是細心檢視smarty類需求的那幾個變量和路近能否都存在。
持續往下檢視:
if ((DEBUG_MODE & 2) == 2)
{
$smarty->direct_output = true; //我記住這個變量smarty如同沒有
$smarty->force_compile = true;
}
else
$smarty->direct_output = false; //
$smarty->force_compile = false;
看這一段,檢視smarty類裡能否存在這幾個變量,沒有就删掉。
斷定無誤後,能夠回到根目錄的index.php檔案上了。
之前,咱們将init.php 換成了init_x.php,這僅僅第一步。下面咱們要持續修正模闆,将一切的dwt檔案換成tpl檔案(回憶中是兩處)。
如今進入themes檔案夾,将index.dwt檔案修正為index.tpl檔案。
如今咱們來翻開debug,看看能不能進行smarty調試,并運用其他的smarty标簽了。(這裡闡明一下,smarty檔案夾需求有可運轉的權限。)
還記住剛剛你屏蔽的那兩行smarty不存在的變量麼?那個是調試。咱們細心對照發現,2.6的smarty調試的變量名稱為debuging。
咱們将方才:
$smarty->direct_output = false;
中的direct_output,修正為debuging,而且改為true就能夠彈出smarty官方的調試視窗了