navigasyon PHP vurgulayın

5 Cevap php

Ben bir süre önce bir web sitesi açtı ve başarılı navigasyon geçerli sayfayı vurgulamak için JavaScript + CSS kullandım. Ancak, Safari çalışmıyor ve JavaScript kullanarak zaman, iyi doğrulamak değil, bu yüzden PHP HTML öğelerine CSS id atamak karar verdi. Şimdiye kadar, o PHP denendi görüntülenen her bağlantının iki vardı, diğer zamanlarda göre çalışıyor. Benim sorunum bütün bağlantıları normal bakmak ve CSS özelliği uygulanır olmasıdır. Ben benim PHP kodu ile ilgisi olan bir duygu var, ama ben emin değilim.

Site adresi here

PHP kodu gelince, işte burada:

<?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>');

?>

Size vurgulayarak etkisi burada geçerli sayfaya uygulanacak gerekiyordu CSS gibi görünmelidir ne bir fikir adamlar vermek amacıyla:

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

Ben yanlış ne yaptığını yukarı bakarken, ben doğru uygulama olduğunu söyledi, ancak PHP değerleri elde ettiğini görünmüyor.

5 Cevap

tanrı aşkına bu kodu kullanmayın!! Bu do!

<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>

sen php nefret edenlere daha fazla cephane veriyor!

Deneyin:

echo $page;

ne olsun görmek için. Eğer atar kodunu sonrası olabilir $page?

Yıllardır php programlama ve deneme yanılma Uzun süre ne yapacağını değil öğrendikten sonra, burada koduna göre hata ayıklama ve genel olarak hayatınızı daha kolay, yapmak için bazı genel öneriler şunlardır:

  • , Php ve html arasında çok net bir ayrım yapmak. Diğer bir deyişle, şablonları app html var. Çıplak en azından bu şablonları gerekli Minimum gerçek php olması dahil php dosyaları olabilir. Bir üçüncü taraf çiftleşmiş sistemi kullanıyorsanız yürütmem ötesinde, muhtemelen sizin için daha kolay olacaktır. Ben smarty öneririz. O iyi, disiplin ile ayrılmış her şeyi tutmak için tamamen mümkündür, ama easier başında, iyi çiftleşmiş sistemi kullanılarak şeyler ayrı tutmak için fazla.

  • Genel olarak php bir sayfa biz datastore / veritabanından $ _REQUEST itibaren giriş ve veri çekti ve onlara bizim işlemlerini yapmış zaman bakmalısınız genellikle ne bilmenin lüksüne sahip. Biz tam olarak nasıl isterseniz tüm verileri Yani, bir zamanlar biz giriş verilerini manipüle içeren bir bölüm var ve o sadece son sayfasının görünümünü göstermek için ona bazı asgari ekran mantığı ile bir şablona her şeyi geçmek gerekir . Örneğin yerine

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

    html dışında veri türünü belirlemek ve sadece then, o belirlenmesi örneğin geçmek

    $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']."";

`

  • Kendi kod, çok sağlam bir ayırma tekniği, MVC deseni kullanarak çerçeveler içine bakarak deneyin. Eğer başkasının eski kod üzerinde çalışıyorsanız bu durumda sadece (php özellikle html) kadar olabildiğince bölümlere şeyleri tutmaya çalışın böylece Açıkçası, bu, kolay değil.

Bu muhtemelen ne istediğinizi yapmak için kolay bir yoldur:

<?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";
}
?>

Sadece üst düzenleme $menu ve komut kalanı ilgilenir.

Ben php kodunda herhangi bir sorun bulmuyorum. Daha iyi aşağıdaki gibi css değiştirebilirsiniz ...

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