0

codeIgniter でアクティブなメニューを作成するにはどうすればよいですか?ホバーしたときではなく、クリックすると、たとえば、あるカテゴリにいる場合、メニューのその項目が強調表示されます。これを CI で行うにはどうすればよいですか?

4

2 に答える 2

1

ルーティングおよびメニュー生成スクリプトによって異なります。最も簡単な方法は、uri のセグメントをチェックすることです。たとえば、静的メニューの場合、次のことができます。

<?php $class = $this->uri->segment(1)=="someController"?"highlighted":""; ?>
<a href="/index.php/someController/" class="<?php echo $class; ?>">Menu item</a>
于 2012-05-08T10:38:57.300 に答える
0

ここにはいくつかの手順が含まれます。

まず、「現在の」メニュー項目またはカテゴリを特定する必要があります。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>
}
于 2012-05-08T11:27:29.150 に答える