2012-05-03 87 views
1

我與PrestaShop,並在主題工作,我已經加了我自己的目錄與樣式表裏面的Prestashop根目錄

我已經那麼header.tpl鏈接的樣式表 如

<link rel="stylesheet" type="text/css" href="/directory/style.css" /> 

然而,如果我在一個子目錄中安裝prestashop,例如

www.website.com/prestashop/,則樣式未顯示,因爲它認爲該網站的根目錄是www.website.com。有沒有pretsashop字符串我可以用來回顯目錄prestashop安裝在?

例如像

$ ps_dir或 $ ps_uri ???

所以我可以做這樣的事情

<link rel="stylesheet" type="text/css" href="{$ps_dir}/directory/style.css" /> 

乾杯

回答

6

假設你正在使用PS 1.4起,那麼你應該總是排隊附加樣式表,但要做到這一點,您需要爲FrontController類添加一個簡單的覆蓋或創建一個主題特定的模塊。這樣做的好處是Prestashop會將您的CSS(或JavaScript)包含在它的最小化和CDN代碼中,這可以大大加速您的網站。

是否有任何理由爲什麼你需要有一個單獨的CSS文件,並且不能命名您的主題global.css所需的CSS?使用global.css文件意味着它將被自動包含並最小化。

如果你也許需要有條件地添加CSS(這是你必須把它硬編碼到主題),或參考其他主題資源,那麼你也可以使用以下變量:

{$css_dir} The /css directory in your theme 
{$js_dir} The /js directory in yout theme 
{$img_dir} /img directory in your theme 
{$tpl_dir} Your theme's top-level directory 
2

可以使用

<a href="{$base_dir}/directory/style.css"> 
2

這可能是一些usefuls使用

變量(看一看PS_root /類/控制器/ FrontConrtoller.php - 在的Prestashop千伏線路310 1.5.2)

$this->context->smarty->assign(array(
     // Usefull for layout.tpl 
     'mobile_device' => $this->context->getMobileDevice(), 
     'link' => $link, 
     'cart' => $cart, 
     'currency' => $currency, 
     'cookie' => $this->context->cookie, 
     'page_name' => $page_name, 
     'hide_left_column' => !$this->display_column_left, 
     'hide_right_column' => !$this->display_column_right, 
     'base_dir' => _PS_BASE_URL_.__PS_BASE_URI__, 
     'base_dir_ssl' => $protocol_link.Tools::getShopDomainSsl().__PS_BASE_URI__, 
     'content_dir' => $protocol_content.Tools::getHttpHost().__PS_BASE_URI__, 
     'base_uri' => $protocol_content.Tools::getHttpHost().__PS_BASE_URI__.(!Configuration::get('PS_REWRITING_SETTINGS') ? 'index.php' : ''), 
     'tpl_dir' => _PS_THEME_DIR_, 
     'modules_dir' => _MODULE_DIR_, 
     'mail_dir' => _MAIL_DIR_, 
     'lang_iso' => $this->context->language->iso_code, 
     'come_from' => Tools::getHttpHost(true, true).Tools::htmlentitiesUTF8(str_replace(array('\'', '\\'), '', urldecode($_SERVER['REQUEST_URI']))), 
     'cart_qties' => (int)$cart->nbProducts(), 
     'currencies' => Currency::getCurrencies(), 
     'languages' => $languages, 
     'meta_language' => implode('-', $meta_language), 
     'priceDisplay' => Product::getTaxCalculationMethod(), 
     'add_prod_display' => (int)Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 
     'shop_name' => Configuration::get('PS_SHOP_NAME'), 
     'roundMode' => (int)Configuration::get('PS_PRICE_ROUND_MODE'), 
     'use_taxes' => (int)Configuration::get('PS_TAX'), 
     'display_tax_label' => (bool)$display_tax_label, 
     'vat_management' => (int)Configuration::get('VATNUMBER_MANAGEMENT'), 
     'opc' => (bool)Configuration::get('PS_ORDER_PROCESS_TYPE'), 
     'PS_CATALOG_MODE' => (bool)Configuration::get('PS_CATALOG_MODE') || !(bool)Group::getCurrent()->show_prices, 
     'b2b_enable' => (bool)Configuration::get('PS_B2B_ENABLE'), 
     'request' => $link->getPaginationLink(false, false, false, true) 
    )); 

我需要爲我的PrestaShop網站的文件包含的根絕對變量,所以我不得不來定義一個新的:

在PS_root

/清除/班/控制器/ FrontConrtoller.php

class FrontController extends FrontControllerCore{ 
    $this->context->smarty->assign(array(
     'root_dir' => _PS_ROOT_DIR_ 
    )); 
}