4

<ul><li>要素で構成されたシンプルなメニューとclass="active"、現在のページをマークする場所があります。$_get[]特定のページを url: で選択するために、変数が渡されます?pg=PAGE

私はphpにかなり慣れていないので、まだ学んでいます。これは問題なく機能しますが、もっと簡単で短い方法が必要だと思います。

<ul class="nav">
  <li <?php if ($_GET['pg'] == "PAGE1") { echo "class=\"active\""; } ?>><a href="?pg=PAGE1">FIRST PAGE</a></li>
  <li <?php if ($_GET['pg'] == "PAGE2") { echo "class=\"active\""; } ?>><a href="?pg=PAGE2">SECOND PAGE</a></li>
</ul>
4

6 に答える 6

3
<?php
    $pages = array(
        'PAGE1' => 'FIRST PAGE',
        'PAGE2' => 'SECOND PAGE');
?>

<ul class="nav">
  <?php foreach ($pages as $pageId => $pageTitle): ?>
  <li <?=(($_GET['pg'] == $pageId) ? 'class="active"' : '')?>><a href="?pg=<?=$pageId?>"><?=$pageTitle?></a></li>
  <?php endforeach; ?>
</ul>

http://php.net/manual/en/control-structures.foreach.php

同じことを繰り返さないでください。両方のli-s は非常に似ています。唯一の違いは、ページ ID とタイトルです。このアプローチは、ページが 3 つ以上ある場合に非常に役立ちます。

PHP と HTML はできる限り分離するようにしてください。これにより、それらを別々のファイルに保管することに決めた場合に作業が楽になります (場合によってはそうする場合もあります)。

于 2013-04-25T22:26:33.083 に答える
0

javascript/Jqueryの値を確認し、それを使用してクラスをタグに動的$_get[]に追加できます。liこれにより、アイテムごとにチェックする必要がなくなりますが、これはli初めてだと述べたので、おそらくもう少し複雑になるかもしれません.

とにかく学んでいるので、その方向にも目を向け始めるのは良いことです。PHP and JSほとんどの場合、手をつないで行きます...

于 2013-04-25T22:20:50.943 に答える
0

ページを配列に入れて、これをはるかに簡単にすることができます。

<ul class="nav">
<?
$pages = array();
$pages[] = array("PAGE1","FIRST PAGE");
$pages[] = array("PAGE2","SECOND PAGE");

foreach($pages as $page) { ?>
    <li <?=(($_GET['pg'] == $page[0])?'class=\"active\"':'')?>><a href="?pg=<?=$page[0]?>"><?=$page[1]?></a></li>
<? } ?>
</ul>
于 2013-04-25T22:25:51.933 に答える
0

使用ternary operator:

<?
$pg = $_GET['pg'];
?>

<ul class="nav">
    <li <?=($pg=="PAGE1"?'class="active"':'')?>><a href="?pg=PAGE1">FIRST PAGE</a></li>
    <li <?=($pg=="PAGE2"?'class="active"':'')?>><a href="?pg=PAGE2">SECOND PAGE</a></li>
</ul>
于 2013-04-25T22:18:00.160 に答える