2016-03-08 415 views
1


我的下一個問題是所有的Php程序員和prestashop的開發人員。
我的問題在於,我想要使用各種CDN來緩存大部分靜態內容,例如javascript和css文件。
迄今爲止我寫的php腳本是這一個,但問題是我只將一個文件重定向到CDN庫。我希望這些文件中的一部分被緩存,但不是全部。 這是我的一段代碼,遠離我一直在使用WebPagetest進行的測試,它正在工作。對於Jquery和Css文件使用cdn - 覆蓋Prestashop的默認設置

<?php 
class FrontController extends FrontControllerCore { 
     public function setMedia() { 
      parent::setMedia(); 
      $key = array_search(_PS_JS_DIR_ . 'jquery/jquery-1.11.0.min.js', $this->js_files); 
      if ($key !== false) 
       $this->js_files[$key] = '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'; 
     } 
    } 

此外,我爲了緩存其他jQuery的文件添加更多的代碼到這一個,但沒有運氣(我得到一個500內部服務器錯誤)

<?php 

class FrontController extends FrontControllerCore { 
    public function setMedia() { 
     parent::setMedia(); 
     $key1 = array_search(_PS_JS_DIR_ . 'jquery/jquery-1.11.0.min.js', $this->js_files); 
     $key2 = array_search(_PS_JS_DIR_ . 'jquery/plugins/bxslider/jquery.bxslider.js', $this->js_files); 
     $key3 = array_search(_PS_JS_DIR_ . 'jquery/plugins/chosen/jquery.chosen.js', $this->js_files); 
     if ($key1 !== false) 
      $this->js_files[$key1] = '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'; 

     if($key2 !== false) 
      $this->js_files[$key2] = '//cdnjs.cloudflare.com/ajax/libs/bxslider/4.1.2/jquery.bxslider.js'; 

     if($key3 !== false) 
      $this->js_files[$key3] = '//cdnjs.cloudflare.com/ajax/libs/chosen/0.9.8/chosen.jquery.js' 

     } 


?> 

你有什麼想法關於我應該如何處理腳本以緩存我需要的剩餘內容?
感謝
Orestis的

回答

0

如果你在的Prestashop 1.6工作(沒有對1.5測試),你可以在classes/controller/Controller.php類中的方法addJqueryPlugin()覆蓋:

/** 
* Adds jQuery plugin(s) to queued JS file list 
* 
* @param string|array $name 
* @param string null $folder 
* @param bool $css 
*/ 
public function addJqueryPlugin($name, $folder = null, $css = true) 
{ 
    if (!is_array($name)) { 
     $name = array($name); 
    } 
    if (is_array($name)) { 
     foreach ($name as $plugin) { 
      $plugin_path = Media::getJqueryPluginPath($plugin, $folder); 
      switch($plugin) { 
       case "bxslider": 
        $plugin_path['js'] = '//cdnjs.cloudflare.com/ajax/libs/bxslider/4.1.2/jquery.bxslider.js'; 
        break; 
       case "chosen": 
        $plugin_path['js'] = '//cdnjs.cloudflare.com/ajax/libs/chosen/0.9.8/chosen.jquery.js'; 
        break; 
      } 

      if (!empty($plugin_path['js'])) { 
       $this->addJS($plugin_path['js'], false); 
      } 
      if ($css && !empty($plugin_path['css'])) { 
       $this->addCSS(key($plugin_path['css']), 'all', null, false); 
      } 
     } 
    } 
} 
+0

的覆蓋文件內斯去這裏/的public_html/override/classes/controller/Controller.php
對不對?當我上傳文件時,出現500內部服務器錯誤。或者我應該只更改其他文件並將其上傳到同一個目錄中? –