PHP を使用してタブ付きメニュー項目のクラスを割り当てる最良の方法を決定しようとしています。
ここや他の場所でこれまでに読んだことは、非常に単純なケースを決定するだけのようです. ページにいるときにタブのアクティブなクラスが必要であり、その機能にアクセスできないアカウントのタブの無効なクラスも必要です (セッションフラグに基づく)。
もともと、私は次のようにすべてをエコーアウトしました:
<?php
echo '<li class="some-tab ';if($pageName === "somepage.php"){echo'active';}
if(!$_SESSION['some_flag']){echo'disabled';
echo'"><a href="">Link</a>';}
?>
しかし、その後、コードの恥が始まり、PHP のようなテンプレート エンジンを本格的に使い始めようとしています。とは言っても、実際のテンプレート エンジンは使いたくありません。
HTML の他の部分については、PHP に出入りするのは簡単で比較的洗練されていますが、クラスを機能させるとなると、扱いにくく感じます。マークアップを完全に汚し、テンプレートにあまりにも多くのロジックを残してしまいます。
そのようです:
<li class="some-tab <? if($pageName === "somepage.php"){echo'active';} ?></li>
ひどいわけではありませんが、さらにいくつかのルールを追加すると、めちゃくちゃになります。
私の最初の考えは、連想配列を作成し、その内容をエコーすることです:
<? if(some condition){
$class = array("sometab" => "sometab active disabled");
}
else{
$class = array("sometab" => "sometab");
}
?>
<li class="<?= $class['sometab'] ?>"> </li>
でも、巧妙すぎる気がする。
URLをフェッチするだけではないため、一部の人が示唆しているように、ボディクラスまたはJavascript Cookieとして情報を保存することは避けたいです。
私が見逃しているオプションはありますか?
クラス配列は少しでも適切ですか? それが恐ろしい考えかどうかを知る経験はありません。