0

現在、タブ付きの Web サイトを作成しています。

http://imageshack.us/photo/my-images/16/chosentab.png/ (画像を埋め込めません)

ご覧のとおり、classPvP というタブが選択されており、タグのクラスに「 selected 」を追加することで選択されます。ただし、この Web サイトは 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 です。

アップデート

スニペットで現在のリソースの menutitle を使用する場合は、2 つの方法があります。スニペット呼び出しから渡します。

<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 のリソース フィールドを取得できます。

于 2013-04-15T01:06:51.823 に答える