Common storefront globals: use the PHP column in controllers/modules,
and the Smarty (TPL) column in theme templates.
Empty cells mean there is no matching counterpart.
Most Smarty variables are assigned in config/settings.php.
Page fields (pageName, pageTitle, …) come from
Page::add(). Settings keys live in the database via
Settings::get() / Settings::set().
Site & settings
| PHP | Smarty (TPL) | Description |
Settings::get('SITE_NAME') |
{$siteName} |
Store / brand name |
Settings::get('DOMAIN') or $domain |
{$domain} |
Site base URL (with trailing slash style as configured) |
Settings::get('FOLDER') |
{$rootDir} |
Install folder path segment (subfolder installs) |
Settings::get('THEME') |
{$activeTheme} |
Active theme folder name |
Settings::get('SHOP_TOKEN') |
|
Cron / module API token (never expose in TPL) |
Settings::get('CONTACT_EMAIL') |
{$contactEmail} |
Public contact e-mail |
Settings::get('CONTACT_PHONE') |
{$contactPhone} |
Display phone |
Settings::get('CONTACT_PHONE_TEL') |
{$contactPhoneTel} |
Phone for tel: links |
Settings::get('CONTACT_ADDRESS') |
{$contactAddress} |
Street address |
Settings::get('CONTACT_CITY') |
{$contactCity} |
City |
Settings::get('CONTACT_COUNTRY') |
{$addressCountry} |
Country |
Settings::get('POSTAL_CODE') |
{$postalCode} |
Postal / ZIP code |
Settings::get('LATITUDE') |
{$latitude} |
Map latitude |
Settings::get('LONGITUDE') |
{$longitude} |
Map longitude |
Settings::get('OPEN_HOUR') |
{$openHour} |
Opening hour |
Settings::get('CLOSE_HOUR') |
{$closeHour} |
Closing hour |
Settings::getFooterDescription() |
{$footerDescription} |
Footer about text |
Settings::get('FACEBOOK_LINK') |
{$facebookLink} / {$socialLinks.facebook} |
Facebook URL |
Settings::get('INSTAGRAM_LINK') |
{$instagramLink} / {$socialLinks.instagram} |
Instagram URL |
Settings::get('X_LINK') |
{$xLink} / {$socialLinks.x} |
X (Twitter) URL |
Settings::get('YOUTUBE_LINK') |
{$youtubeLink} |
YouTube URL |
Settings::get('LINKEDIN_LINK') |
{$linkedinLink} |
LinkedIn URL |
Settings::get('PINTEREST_LINK') |
{$pinterestLink} |
Pinterest URL |
Settings::get('TIKTOK_LINK') |
{$tiktokLink} |
TikTok URL |
Settings::get('SITE_VISIBILITY') |
|
e.g. members_only storefront gate |
Settings::get('MEMBER_APPROVAL') |
|
manual = pending member accounts |
Settings::get('DEMO_MODE') |
|
Demo lock (blocks risky admin actions) |
Page context
| PHP | Smarty (TPL) | Description |
Page::add('home', $title, …) |
{$pageName} |
Current page key (e.g. home, product, cart) |
2nd arg of Page::add() |
{$pageTitle} |
Document / SEO title |
5th arg of Page::add() |
{$pageDesc} |
Meta description |
3rd / 4th args of Page::add() |
{$css} / {$js} |
Extra per-page CSS/JS filenames |
|
{$year} |
Current year (footer copyright) |
|
{$time} / {$minute} |
Cache-busting time stamps |
Customer, cart & session
| PHP | Smarty (TPL) | Description |
Customer::isLoggedIn() |
{$isLoggedIn} |
Whether a customer session exists |
Customer::getCurrent() (typical) |
{$customer} |
Logged-in customer array / object |
Cart::getSummary() (typical) |
{$cart} |
Cart summary (items, totals, count) |
$_SESSION['csrf_token'] |
{$token} |
CSRF token — JS usually reads csrfToken from header |
|
{$saveToken} |
Legacy hourly token (prefer CSRF for APIs) |
|
{$favoriteCount} |
Wishlist / favorites count |
|
{$notificationCount} |
Customer notification badge count |
|
{$headerNotifications} |
Header notification list |
|
{$cartI18n} / {$cartI18nJson} |
Cart UI translation strings (JS-safe JSON) |
Paths & assets
| PHP | Smarty (TPL) | Description |
_BASE_DIR_ |
{$base_dir} |
Filesystem / base dir constant |
_THEME_BASE_DIR_ |
{$tpl_dir} |
Active theme template directory |
_THEME_CSS_DIR_ |
{$css_dir} |
Theme CSS URL path |
_THEME_JS_DIR_ |
{$js_dir} |
Theme JS URL path |
_THEME_IMG_DIR_ |
{$img_dir} |
Theme images URL path |
_BASE_IMG_DIR_ |
{$base_img} |
Shared / product images base |
_BASE_JS_DIR_ |
{$base_js} |
Shared JS base |
_THEME_REEL_DIR_ |
{$tRealDir} |
Theme real filesystem path |
Performance::versionedUrl($url) |
{'css/app.css'|asset_url} |
Cache-busted asset URL (?v=…) |
SiteAssets::resolveLogoUrl('header') |
{$siteLogos.header} |
Logo URLs (header, bar, footer) |
Theme::getColors($theme) |
{$themeColors} |
Theme color variables array |
|
{$themeOptions} |
Theme option flags / config |
Module::… (aggregated) |
{$moduleAssets.css} / {$moduleAssets.js} |
Active module front CSS/JS URL lists |
Catalog, language & currency
| PHP | Smarty (TPL) | Description |
|
{$menuCategories} |
Header / menu category tree |
Cms::getFooterLinks() |
{$cmsFooterLinks} |
CMS pages linked in footer |
Lang::getAvailable() |
{$shopLanguages} |
Enabled storefront languages |
Lang::getDefault() |
{$defaultLang} |
Default language code |
$_SESSION['selectLang'] |
{$selectLang} |
Current language code |
Lang::getSwitcherList() |
{$langSwitcher} |
Language switcher entries |
Currency::getDisplayCurrency() |
{$displayCurrency} |
Customer display currency |
Currency::getShopCurrency() |
{$shopCurrencyCode} |
Shop base currency code |
Tools::displayPrice($price) |
|
Format price for current display currency |
translate('Key') |
{'Key'|translate} |
Storefront i18n string |
Cargo::getDisplayHints() |
{$freeShippingMin} / {$shippingFee} |
Free-shipping threshold and shipping fee hints |
Hooks & modules
| PHP | Smarty (TPL) | Description |
Module::getRenderedDisplayHooks() |
{$hooks} |
All display hook HTML (e.g. {$hooks.footer}) |
Module::refreshHook($smarty, 'product_detail', $ctx) |
{$hooks.product_detail} |
Fill a deferred hook on the current page |
Module::renderAdminHooks([…]) |
{$adminHooks.admin_header} |
Admin panel display hooks |
|
{$newsletterApiUrl} |
Default newsletter subscribe API URL |
Module::registerHook('order.placed', $cb) |
|
Event listener (no TPL variable) |
Admin & env (PHP only)
| PHP | Smarty (TPL) | Description |
Admin::url('orders') |
{$adminUrl} (admin templates) |
Admin URL using ADMIN_URI from config/env.php |
$_SESSION['admin_csrf_token'] / $adminToken |
{$adminToken} |
Admin CSRF token |
adminT('Key') |
{'Key'|adminT} |
Admin panel translation |
FShop::VERSION |
|
Core version string (admin footer) |
config/env.php → ADMIN_URI |
|
Public admin path (folder stays admin/) |
config/env.php → DB_*, REWRITE_BASE |
|
Database and rewrite base — not for templates |
Module templates: Prefer
$this->renderFrontTemplate('hook', $vars)
so you do not overwrite globals like {$isLoggedIn} or {$cart}.
Parent Smarty variables are still readable inside the module TPL.