我目前正在开发针对服装网站的 Prestashop 1.7.1.0 模块。我需要获取用户当前浏览的准确页面名称,例如“index”、“Women”、“Tops”、“T-shirts”,进入模块。 我尝试使用 Smarty 全局变量来实现此目的,但这些变量似乎在这个版本中被删除了。
任何建议和帮助将不胜感激。
要在 tpl 中获取此内容,1.7 版本中用于执行此操作的新变量如下:
{$page.page_name}
Instead of:
{$page_name}
您可以在模块的任何 tpl 中使用它。
它在我创建的 Prestashop 1.7 模块中适用于我,但是我无法获取其他全局 smarty 变量,即 shop_name、lang_iso 等...
FrontController 加载页面选项并分配它。
您可以在 tpl 中使用 {$page} 获取它
Array
(
[title] =>
[canonical] =>
[meta] => Array
(
[title] => 'title'
[description] =>
[keywords] =>
[robots] => index
)
[page_name] => 'page name is here'
[body_classes] => Array
(
[lang-es] => 1
[lang-rtl] =>
[country-ES] => 1
[currency-EUR] => 1
[layout-full-width] => 1
[page-] => 1
[tax-display-enabled] => 1
[pm_details_layout1] => 1
[header_static] => 1
)
[admin_notifications] => Array
(
)
)
{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}
你可以尝试这个代码,我认为它有效......
我无法让 Smarty 函数在我的模块上工作,但我设法使用 PHP $_SERVER 数组函数编写了一个简单的解决方案。我将发布下面的代码供其他人参考。
$protocol = null;
if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on")
{
$protocol = 'https';
}
else
{
$protocol = 'http';
}
$port = "";
if ($_SERVER["SERVER_PORT"] != "80")
{
$port = ":".$_SERVER["SERVER_PORT"];
}
$currentPageUrl = $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'];
echo '<b>Current Page URL : </b>' . $currentPageUrl . "<br>";
要在 tpl 中获取此内容,1.7 版本中用于执行此操作的新变量是:
{$page.page_name}
而不是:
{$page_name}
您可以在模块的任何 tpl 中使用它。
希望对你有帮助
您还可以使用js/jQuery找到页面名称
console.log(prestashop.page.page_name)