codeIgniter でアクティブなメニューを作成するにはどうすればよいですか?ホバーしたときではなく、クリックすると、たとえば、あるカテゴリにいる場合、メニューのその項目が強調表示されます。これを CI で行うにはどうすればよいですか?
2 に答える
ルーティングおよびメニュー生成スクリプトによって異なります。最も簡単な方法は、uri のセグメントをチェックすることです。たとえば、静的メニューの場合、次のことができます。
<?php $class = $this->uri->segment(1)=="someController"?"highlighted":""; ?>
<a href="/index.php/someController/" class="<?php echo $class; ?>">Menu item</a>
ここにはいくつかの手順が含まれます。
まず、「現在の」メニュー項目またはカテゴリを特定する必要があります。URL 構造と最上位のメニュー項目 (および/またはカテゴリ) との間に直接的な関係があるようにサイトを構成できる場合、これは非常に役立ちます。
メイン メニューを生成するコードの共通セクションが必要です。このコードは、メニュー項目のタイトルの配列を繰り返し処理して、メニューの HTML を生成できます。配列に URL セグメントのキーとメニュー項目テキストの値がある場合...
$menuItems = Array(
"/home" => "Home",
"/products" => "Products",
"/faq" => "FAQ",
"/aboutus" => "About Us"
);
(どれが URI セグメントでどれがメニュー タイトルのみであるかを明確にするために、先頭のスラッシュが含まれています。通常、先頭のスラッシュは省略します)
...次に、反復処理中に、現在の URL の関連セグメントに対して各項目をチェックできます。
第 2 に、現在のアイテムがどれかを判断したら、関連する HTML 要素に css クラスを追加できます。
例えば
$menuHtml = "<ul class='menu'>\r\n";
foreach($menuItems as $segment => $title) {
if($segment == $this->uri->segment(1)) {
$menuHTML .= "<li class='current'>$title</li>";
} else {
$menuHTML .= "<li>$title</li>\r\n";
}
}
$menuHtml .= "</ul>";
li.current
次に、必要なハイライト スタイルを CSS で要素に適用する必要があります。
li.current {
<your-highlight-css-styles-here>
}