的Prestashop根目录(Prestashop root directory)

2019-09-16 23:48发布

我与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" />

干杯

Answer 1:

假设你正在使用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 


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


Answer 3:

您可以使用

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


文章来源: Prestashop root directory