我目前正在创建一个带有标签的网站。
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的任何资源字段