获取 Prestashop 1.7 模块的当前页面名称

问题描述 投票:0回答:6

我目前正在开发针对服装网站的 Prestashop 1.7.1.0 模块。我需要获取用户当前浏览的准确页面名称,例如“index”、“Women”、“Tops”、“T-shirts”,进入模块。 我尝试使用 Smarty 全局变量来实现此目的,但这些变量似乎在这个版本中被删除了。

任何建议和帮助将不胜感激。

smarty prestashop prestashop-1.7
6个回答
12
投票

要在 tpl 中获取此内容,1.7 版本中用于执行此操作的新变量如下:

{$page.page_name}

Instead of:

{$page_name}

您可以在模块的任何 tpl 中使用它。

它在我创建的 Prestashop 1.7 模块中适用于我,但是我无法获取其他全局 smarty 变量,即 shop_name、lang_iso 等...


2
投票

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


      (
        )

)

1
投票
{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}

你可以尝试这个代码,我认为它有效......


0
投票

我无法让 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>";

0
投票

要在 tpl 中获取此内容,1.7 版本中用于执行此操作的新变量是:

{$page.page_name}

而不是:

{$page_name}

您可以在模块的任何 tpl 中使用它。

希望对你有帮助


0
投票

您还可以使用js/jQuery找到页面名称

console.log(prestashop.page.page_name)
© www.soinside.com 2019 - 2024. All rights reserved.