在多个页面中选择用户所在的选项卡


Choosing what tab a user is on, accross multiple pages

我目前正在创建一个带有标签的网站。

http://imageshack.us/photo/my-images/16/chosentab.png/(它不允许我嵌入图像)

如您所见,有一个被选中的名为classPvP的选项卡,它是通过在标记的类中添加"selected"来实现的。然而,这个网站就像一个wiki,因此有许多不同的页面,我不想为每个页面创建一个单独的"模板"(如果你愿意的话),因为在所有这些模板中更新或改变一些东西将是非常困难的。

我试图使用此代码来添加所需的类,当你选择了一个选项卡:

<?php
//Defining the variables
$a="[[*menutitle]]";
if ($a=="classpvp"){
echo "selected";
} else {
echo $a;
} ?>

与CMS (MODx)我正在使用,[[*menutitle]]被我想要有'选择'的任何选项卡取代。但是,由于某种原因,没有运行if语句,但是回显结果显示$a的值为classpvp

这让我很困惑,为什么if语句没有被运行,但值是正确的-我存储的东西不好吗?(抱歉,我是PHP新手)

(请记住[[TabSelectClassPvP]]被php代码取代)当使用var_dump($a)(如建议)时,类从:

<li class="navTab [[TabSelectClassPvP]]">
ClassPvP
</li>

:

<li class="navTab string(14) " classpvp"="">
ClassPvP
</li>

正在运行的php代码是:

<?php
//Defining the variables
$a="[[*menutitle]]";
var_dump($a);
if ($a=="classpvp"){
echo "selected";
} else {
echo $a;
}

谢谢,Muffinjello

注:-我愿意尝试新的方法,比如从HTML ID中检索信息?

为你的菜单使用WAyFinder包,它会自动在你的class属性中放置" active "规则。http://rtfm.modx.com/display/ADDON/Wayfinder如果你想使用一些不同的&hereClass是你想在WayFinder调用中指定的c=值。

如果你想在代码片段中使用当前资源的菜单标题,有两种方法,从代码片段调用中传递它:

<li class="navTab [[!TabSelectClassPvP? &a='[[*menutitle]]']]">

你的代码片段看起来像:

<?php
// Defining the variables
// $a="[[*menutitle]]";
// var_dump($a);
if ($a=="classpvp"){
echo "selected";
} else {
echo $a;
}

[你可能应该检查$a是否已经传递]

或者您可以直接在代码片段中查询当前页面:

<?php
// Defining the variables
// $a="[[*menutitle]]";
// var_dump($a);
$a = $modx->resource->get('menutitle');
if ($a=="classpvp"){
echo "selected";
} else {
echo $a;
}

由于modx对象总是假定"当前资源",因此您可以像这样在代码片段中抓取tv的任何资源字段