Выбор вкладки, на которой находится пользователь, на нескольких страницах

В настоящее время я создаю веб-сайт с вкладками.

http://imageshack.us/photo/my-images/16/chosentab.png/ (это не позволит мне вставить изображение)

Как видите, есть вкладка с именем classPvP, которая выбрана, и это делается путем добавления «selected» в класс тега. Тем не менее, этот веб-сайт будет похож на вики, и поэтому будет иметь много разных страниц, и я не хочу создавать отдельный «шаблон» (если хотите) для каждой страницы с другой выбранной вкладкой, потому что тогда обновить или изменить что-то во всех этих шаблонах будет очень сложно.

Я пытаюсь использовать этот код для добавления в нужный класс, когда вы выбрали вкладку:

<?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>

to:

<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;
}

Спасибо, Маффинжелло

P.S. - Я открыт для новых способов сделать это, может быть, что-то, что извлекает информацию из идентификатора HTML?


person muffinjello    schedule 15.04.2013    source источник
comment
можете ли вы опубликовать вывод var_dump($a); перед оператором if   -  person Aydin Hassan    schedule 15.04.2013
comment
Сделанный! Добавил это к вопросу, @AydinHassan, спасибо!   -  person muffinjello    schedule 15.04.2013
comment
Обратите внимание на пробел в начале строки :)   -  person Aydin Hassan    schedule 15.04.2013
comment
@AydinHassan Нет, это не так :(   -  person muffinjello    schedule 15.04.2013
comment
@Crisp, как мне сделать из нее полезную строку?   -  person muffinjello    schedule 15.04.2013
comment
Итак, if(trim($a) == "classpvp") { все еще не работает так, как вы хотите?   -  person Aydin Hassan    schedule 15.04.2013
comment
Нет :( К сожалению, это не так.   -  person muffinjello    schedule 15.04.2013
comment
последний: if(strpos($a,classpvp) !== false) {   -  person Aydin Hassan    schedule 15.04.2013
comment
Нет, T_T, может быть, это как-то связано с тем, что vardump является строкой (14)?   -  person muffinjello    schedule 15.04.2013


Ответы (1)


используйте пакет WAyFinder для своих меню, он автоматически поместит «активное» правило в атрибут вашего класса. http://rtfm.modx.com/display/ADDON/Wayfinder, если вы хотите используйте что-то другое, &hereClass - это значение c=, которое вы хотите указать в своем вызове WayFinder.

ОБНОВЛЕНИЕ

если вы хотите использовать заголовок текущего ресурса в своем сниппете, есть 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 всегда предполагает «текущий ресурс», вы можете захватить любое из полей ресурсов или телевизоров в своих фрагментах таким образом.

person Sean Kimball    schedule 15.04.2013
comment
Эм, я не очень понимаю, как использовать WayFinder, не могли бы вы привести пример фрагмента, в этом случае? :) Спасибо! Я обязательно проголосую за тебя - person muffinjello; 15.04.2013
comment
Ваш минимальный вызов путеводителя [[Wayfinder? &startId='0']], если вы просто вставите это в свой шаблон, он должен вывести [едва] отформатированное меню навигации для вашего сайта. ~ если вы собираетесь использовать modx, вам нужно будет прочитать и понять документацию wayfinder, так как это единственный способ автоматически построить панель навигации/меню. К счастью, wayfinder также является одним из лучших задокументированных дополнений. - person Sean Kimball; 15.04.2013
comment
Хм, спасибо, что сообщили мне. Я определенно проведу много исследований, чтобы увидеть, смогу ли я заставить его работать, если дело дойдет до драки. А пока я посмотрю, смогу ли я заставить мое статическое меню работать хорошо, так как у меня действительно недостаточно времени, чтобы изучить путеводитель :/ Во всяком случае, время утвердить ваш ответ! :) - person muffinjello; 16.04.2013
comment
просто взгляните на ваш фрагмент, $a=[[*menutitle]]; никогда не получит значение, переданное для $a ~ вы должны передать это значение во фрагмент из своего вызова. ‹li class=navTab [[!TabSelectClassPvP? &a='[[*menutitle]]']]› - person Sean Kimball; 16.04.2013
comment
o.o Не поленитесь, еще немного? Таким образом, я бы просто имел текущий скрипт php, но не определял значение для &a (в самом вызове), и когда я так выразился, он правильно присвоил бы значение и запустил оператор «если»? - person muffinjello; 16.04.2013
comment
Я знаю, что это может быть неуместно, но... Я говорил тебе, что люблю тебя? Но я обманываю тебя своим ответом. - Большое спасибо за помощь! Вы только что избавили меня от многих разочарований! :) Может быть, взгляните на мой другой вопрос? - person muffinjello; 16.04.2013