2012-05-03 9 views
1

私はPrestaShopのに働いていると私はそれPrestaShopのルートディレクトリ

内部スタイルシートで自分のディレクトリを追加したテーマで、私はその後、しかし、例えば

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

header.tpl にスタイルシートをリンクしています私がサブディレクトリにprestashopをインストールした場合、例えば

www.website.com/prestashop/サイトのルートがwww.website.comだと思うので、スタイルは表示されません。私はprestashopがインストールされているディレクトリをエコーするために使用することができますpretsashopの文字列がありますか?

例えば

$ ps_dirまたは $ ps_uri

ような何か?

だから私は、あなたが以降のPS 1.4を使用していると仮定すると、

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

答えて

6

を使用することができ、この

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

乾杯

2

ような何かを行うことができ、その後、あなたは本当に常に追加のスタイルシートをエンキューする必要がありこれを行うには、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

これらは

を使用するいくつかのusefuls変数可能性があり(PS_root /クラス/コントローラ/ FrontConrtoller.phpを見てみましょう - PrestaShopののV 1.5.2でライン310)

$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_ 
    )); 
}