Prestashop root directory

16,392

Solution 1

Assuming you're using PS 1.4 onwards, then you should really always enqueue additional stylesheets, although to do that you would need to either add a simple override to the FrontController class or create a theme-specific module. The advantage of this is that Prestashop will include your CSS (or javascript) into it's minimisation and CDN code, which can speed up your site considerably.

Is there any reason why you need to have a separate css file, and can't name the css you need for your theme global.css? Using the global.css file means that it will get included and minimised automatically.

If you perhaps need to add css conditionally (which is where you will have to hard-code it into the theme) or refer to other theme resources then you can also use the following variables:

{$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 

Solution 2

These could be some usefuls variables to be used

(Take a look at PS_root/classes/controller/FrontConrtoller.php - line 310 in PrestaShop v 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)
    ));

I needed for a root absolute variable of my PrestaShop site for files inclusion so i have had to define a new one:

in PS_root/override/classes/controller/FrontConrtoller.php

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

Solution 3

you can use

<a href="{$base_dir}/directory/style.css">
Share:
16,392
AJFMEDIA
Author by

AJFMEDIA

Updated on June 28, 2022

Comments

  • AJFMEDIA
    AJFMEDIA almost 2 years

    I am working with prestashop and in the theme I have added my own directory with a stylesheet inside it

    I have then linked the stylesheet in header.tpl eg

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

    however If i install prestashop in a subdirectory eg

    www.website.com/prestashop/ then the style is not showing because it thinks the root of the site is www.website.com. is there a pretsashop string I can use to echo the directory prestashop is installed in?

    eg something like

    $ps_dir or $ps_uri ???

    So I can do something like this

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

    Cheers