【问题标题】:modx php get current page namemodx php 获取当前页面名称
【发布时间】:2013-03-19 20:06:09
【问题描述】:

在 ModX 中,我试图根据用户所在的页面进行简单的重定向。在我的网站上,我有一个包含各种页面链接的块,例如“关于我们”、“职业”等。这个夹头用于网站上的所有页面。

我的问题从这里开始 - 在“职业”页面中,有一个指向新页面的链接,其中包含所有可用的职位发布。我想这样当用户在“职业”页面上时,单击块上“职业”页面的链接会将他们直接带到职位发布页面,而不是让他们直接回到“职业”页面。

职业页面的网址采用以下格式:

www.example.com/index.php?q=careers.html

因此,如果用户在“职业”页面上,我的代码块中的代码将重定向到工作列表:

<?php
    if ($_SERVER['PHP_SELF'] == "index.php?q=careers.html") {
      echo '<p><a href="www.joblistsite.com">Careers</a></p>';
    } 
    else {
      echo '<p><a href="index.php?q=careers.html">Careers</a></p>';
    }
?>

但这不起作用。它继续链接回职业页面而不是工作列表页面。我试过使用页面的 ID,但也没有。 if 语句应该使用什么来获取 ModX 中的当前页面?我做错了什么?

【问题讨论】:

  • 你尝试回显 $_SERVER['PHP_SELF'] 吗?
  • 您是否尝试过使用http://www. 而不仅仅是www.
  • 我没有使用 modx 的经验,但确定这一点的最佳选择是调试 $_SERVER 变量并检查其中的各种“键”的内容; echo '&lt;pre&gt;'; print_r($_SERVER); echo '&lt;/pre&gt;';
  • 当我回显 $_SERVER['PHP_SELF'] 时,它只是回显“/index.php”
  • @Fred 这只是一个示例 URL。我的实际代码有一个完整的正确 URL

标签: php modx


【解决方案1】:

上述解决方案可以工作(尤其是 WayFinder),但我建议使用 MODX 内置功能,该功能允许您指定页面别名来生成 SEO 友好的 url。这样的别名可以用来轻松定位当前页面。

简单而有效的解决方案是使用页面别名并将其与当前别名进行比较:

$page_alias = $modx->resource->get('alias'); // get alias of the current page

if($page_alias == 'something'){
// do something
}

如果您处理多级页面,您可能希望获取资源父级以使上述工作更有效:

$parent = $modx->resource->get('parent');

【讨论】:

    【解决方案2】:

    我猜你对 MODX 很陌生。通常,Wayfinder 用于构建动态菜单,避免像您正在做的那样需要硬编码的解决方案。

    开始: http://rtfm.modx.com/display/ADDON/Wayfinder+Introductory+Examples

    要像您想要的那样切换 href 属性,您可以指定一个不同的&amp;hereTpl 参数,该参数将为与当前页面相关的菜单项显示。 www.joblistsite.com url 可能包含在每个页面上的模板变量集中。

    【讨论】:

    【解决方案3】:

    我没有使用 modx 的经验,但确定这一点的最佳选择是调试 $_SERVER 变量并检查其中的各种“键”的内容;

    echo '<pre>'; print_r($_SERVER); echo '</pre>';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-18
      • 2012-01-06
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      相关资源
      最近更新 更多