3

私はprestashopで作業しており、テーマにスタイルシートを含む独自のディレクトリを追加しました

次に、header.tplのスタイルシートをリンクしました。

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

ただし、サブディレクトリにprestashopをインストールした場合。

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

例:

$ps_dirまたは$ps_uri???

だから私はこのようなことをすることができます

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

乾杯

4

3 に答える 3

6

PS 1.4以降を使用していると仮定すると、実際には常に追加のスタイルシートをキューに入れる必要がありますが、そのためには、FrontControllerクラスに単純なオーバーライドを追加するか、テーマ固有のモジュールを作成する必要があります。これの利点は、PrestashopがCSS(またはjavascript)を最小化とCDNコードに含めることで、サイトを大幅に高速化できることです。

別のcssファイルが必要で、テーマに必要なcssにglobal.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 
于 2012-05-04T07:10:18.717 に答える
5

これらは、使用されるいくつかの有用な変数である可能性があります

(PS_root / classes / controller / 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 / override / classes / controller/FrontConrtoller.phpにあります

class FrontController extends FrontControllerCore{
    $this->context->smarty->assign(array(
        'root_dir' => _PS_ROOT_DIR_
    ));
}
于 2012-10-25T12:34:34.870 に答える
2

あなたが使用することができます

<a href="{$base_dir}/directory/style.css">
于 2012-05-03T13:11:35.030 に答える