0

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

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 语句没有运行,但是 echo 输出 $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;
}

谢谢,松饼果冻

PS - 我愿意接受新的方法,也许是从 HTML ID 中检索信息的方法?

4

1 回答 1

2

为您的菜单使用 WAyFinder 包,它会自动将“活动”规则放置在您的类属性中。http://rtfm.modx.com/display/ADDON/Wayfinder如果你想使用不同的东西,&hereClass 是你想在 WayFinder 调用中指定的 c=value。

更新

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

<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 对象始终假定“当前资源”,因此您可以像这样在片段中获取任何资源字段或电视。

于 2013-04-15T01:06:51.823 回答