3

しばらく前にWebサイトを立ち上げ、Javascript+CSSを使用してナビゲーションの現在のページを強調表示することに成功しました。ただし、Safariでは機能せず、Javascriptを使用すると十分に検証されないため、PHPでCSSIDをHTML要素に割り当てることにしました。これまでのところ、PHPで試行されたときに、各リンクが2つ表示されていた他の時間と比較して、正常に動作します。私の問題は、すべてのリンクが正常に見え、CSSプロパティが適用されていないことです。PHPコードに関係しているような気がしますが、よくわかりません。

サイトアドレスはこちら

PHPコードについては、次のとおりです。

<?php
echo('<li><span class="bold">Main</span>');
echo('<ul>');
if ($page=="home")
{
echo('<li><a id="current" href="index.shtml">Home</a></li>');
}
else
{
echo('<li><a href="index.shtml">Home</a></li>');
}
if ($page=="faq")
{
echo('<li><a id="current" href="faq.shtml">FAQ</a></li>');
}
else
{
echo('<li><a href="faq.shtml">FAQ</a></li>');
}
if ($page=="about")
{
echo('<li><a id="current" href="about.shtml">About Bryce</a></li>');
}
else
{
echo('<li><a href="about.shtml">About Bryce</a></li>');
}
echo('<li><a href="contact.php">Contact Bryce</a></li>');
if ($page=="sign guestbook")
{
echo('<li><a id="current" href="sign.shtml">Sign Guestbook</a></li>');
}
else
{
echo('<li><a href="sign.shtml">Sign Guestbook</a></li>');
}
if ($page=="view guestbook")
{
echo('<li><a id="current" href="view.shtml">View Guestbook</a></li>');
}
else
{
echo('<li><a href="view.shtml">View Guestbook</a></li>');
}
echo('</ul>');
echo('</li>');
echo('<li><span class="bold">Info</span>');
echo('<ul>');
if ($page=="projects")
{
echo('<li><a id="current" href="projects.shtml">Projects</a></li>');
}
else
{
echo('<li><a href="projects.shtml">Projects</a></li>');
}
if ($page=="books")
{
echo('<li><a id="current" href="books.shtml">Books</a></li>');
}
else
{
echo('<li><a href="books.shtml">Books</a></li>');
}
echo('</ul>');
echo('</li>');
echo('<li><span class="bold">Misc.</span>');
echo('<ul>');
if ($page=="cover designs")
{
echo('<li><a id="current" href="coverdesigns.shtml">Cover Designs</a></li>');
}
else
{
echo('<li><a href="coverdesigns.shtml">Cover Designs</a></li>');
}
echo('<li><a target="_blank" href="http://www.lulu.com/brycecampbellsbooks">Lulu Store</a></li>');
echo('<li><a href="rss/">RSS</a></li>');
echo('</ul>');
echo('</li>');

?>

ハイライト効果がどのように見えるかを皆さんに理解してもらうために、現在のページに適用されることになっているCSSを次に示します。

#current {
   font-style: italic;
   text-decoration: none;
   color: #000000;
  }

私が間違っていることを調べたところ、私はそれを正しく実装していると言われましたが、PHPが値を取得しているようには見えません。

4

5 に答える 5

4

神への愛のためにそのコードを使用しないでください!!!! これを行う!

<li><a href=""<?php if($page=='about'): ?> id="current"<?php endif; ?>>about</a></li>
<li><a href=""<?php if($page=='otherpage'): ?> id="current"<?php endif; ?>>other page</a></li>

あなたはphp嫌いにもっと弾薬を与えています!

于 2010-05-10T18:20:59.503 に答える
1

試す:

echo $page;

あなたが得るものを見るために。割り当てるコードを投稿していただけ$pageますか?

于 2010-05-10T18:13:55.677 に答える
1

何年にもわたって PHP でプログラミングし、試行錯誤を重ねて何をすべきでないかを学んだ後、そのコードに基づいて、デバッグと一般的な生活をより簡単にするための全体的な推奨事項を以下に示します。

  • php と html を明確に区別してください。つまり、アプリの html をテンプレートに含めます。最低限、これらのテンプレートは、実際に必要な最小限の php を含む php ファイルである可能性があります。最低限のことを超えて、サードパーティのテンプレート システムを使用すると、おそらくより簡単になります。スマートをお勧めします。適切な規律によってすべてを適切に分離しておくことは完全に可能ですが、最初は優れたテンプレート システムを使用して分離しておく方がはるかに簡単です。

  • 一般に、php では、$_REQUEST から入力を取得し、データストア/データベースからデータを取得し、それらに対して操作を実行するまでに、ページがどのように見えるべきかを一般的に知ることができます。したがって、すべてのデータを希望どおりに正確に取得したら、入力データの操作を含むセクション全体を作成し、最終ページの外観を表示するための最小限の表示ロジックを含むテンプレートにすべてを渡すだけです。 . たとえば、代わりに

    if($page == 'about'){ echo "<a href='about.php'>About</a>"; }

    htmlの外部でデータのタイプを決定し、その決定を渡すだけです

    $possible_links = array('about'=>array('href'='about.php', 'text'=>'About'), 'other'=>array('href'=>'other.php', 'text'='other pages')); $current_link = $possible_links[$current]; ... ... in separate script, optimally: ... echo "<a href='".$current_link['href'].">".$current_link['text']."";

`

  • 独自のコードで、MVC パターンを使用してフレームワークを調べてみてください。非常に堅牢な分離手法です。明らかに、他の誰かのレガシー コードで作業している場合、それは簡単ではありません。その場合は、可能な限りコンパートメント化するようにしてください (特に php からの html)。
于 2010-05-10T21:08:09.477 に答える
0

これはおそらくあなたが望むことをするためのより簡単な方法です:

<?php
// heredoc syntax ftw!
$menu = <<<MENU
<ul id="nav">
 <li><a href="/">Home</a></li>
 <li><a href="/foo">Foo</a></li>
 <li><a href="/bar">Bar</a></li>
 <li><a href="/baz">Baz</a></li>
 <li><a href="/inga">Inga</a></li>
</ul>
MENU;
$lines = split("\n", $menu);
foreach ($lines as $line) {
 $current = false;
 preg_match('/href="([^"]+)"/', $line, $url);
 if (substr($_SERVER['REQUEST_URI'], 0, 5) === substr($url[1], 0, 5)) {
  $line = str_replace('<li><a h', '<li class="current"><a h', $line);
 }
 echo $line."\n";
}
?>

上部を編集するだけ$menuで、残りはスクリプトが処理します。

于 2010-05-10T21:41:37.290 に答える
-2

あなたのphpコードに問題はありません。以下のようにcssを変更できますか...

。現在 {
   フォント スタイル: 斜体;
   テキスト装飾: なし;
   色: #000000;
  }

于 2010-05-10T18:20:18.910 に答える