2016-03-31 13 views
2

Tüm sayfalar haricinde aşağıdaki kodum var, her sayfa dışında sınıf belirli bir sayfada. Bir dahil klasörün içindeki bu atma üzerinde çalışıyorumHTML kullanarak PHP'deki bir sınıfı nasıl değiştirebilirim?

<li><a href="../index.html">Homescreen</a></li> 
<li><a href="socialstuff.html">Social Stuff</a></li> 
<li><a href="sops.html">SOP's</a></li> 
<li><a href="login.php">FTO Documents</a></li> 
<li><a class="selected" href="changelog.html">Changelog</a></li> 

, ben oluşturmak her sayfa yok yolu, her sayfada bu kod hattı olması. Tek sorum şu ki, hangi sayfada olduğumu nasıl algılayacağım ve daha sonra eski sınıfı otomatik olarak silmeli ve yeni sayfayı geçerli sayfaya ekleyecek mi?

+0

Bununla nasıl başardınız? –

cevap

0

BayssMekanique'in cevabından ayrıntıları almak, ancak daha sistematik bir yanıt vermek ... Linklerinizde yineleme yardımcı olabilir. Ayrıca renderLinkList() veya benzeri bir işlev oluşturabilir ve dizeyi döndürürüm. Bu yardımcı olur umarım.

<?php 
    $links = ''; 

$links = array(
    'Homescreen' => '../index.html', 
    'Social Stuff' => 'socialstuff.html', 
    'SOP\'s'  => 'sops.html', 
    'FTO Docs'  => 'login.php', 
    'Change Log' => 'changelog.html' 
); 

for each ($links as $title => $href) { 
    $selected = ''; 
    if ($_SERVER['REQUEST_URI']) == $href) { 
     $selected = 'class="selected"'; 
    } 
    $linkString = '<li>'; 
    $linkString .= '<a href="'.$href.'" '.$selected.' >'; 
    $linkString .= $title.'</a></li>'; 
    $links .= $linkString; 
} 

//if you made a function you would now return links 
print $links; 
+1

'$ selected' değişkenini, '$ links' değişkenine ekledikten sonra temizlemelisiniz. Else, aynı sınıfı tüm sonraki bağlantılara uygular. – GGG

+0

Teşekkürler @GGG çok iyi bir nokta –

2

Bu, büyük ölçüde yönlendirmeyi nasıl kullandığınıza bağlıdır. Sadece dosya adı yönlendirme kullandığınızı varsayarak, bir URI kontrolü kullanabilirsiniz.

<li><a href="socialstuff.html" class="<?php if($_SERVER['REQUEST_URI']) == 'socialstuff.html'){ echo 'selected'; } ?>">Social Stuff</a></li> 

<ul> öğenizdeki her satır için bunu yaparsınız. Ayrıca, if($_SERVER['REQUEST_URI']) == 'socialstuff.html') satırında, 'socialstuff.html' satırında, bu sayfadayken adres çubuğunun okuduğu kesin URI olması gerekir. Yani, socialstuff.html, misc adlı bir klasörde bulunuyorsa ve bu sayfanın URI'si muhtemelen misc/socialstuff.html olacaktır.

+0

Peki, söz konusu sınıfı "seçili" olarak nasıl değiştiririm –

+0

Sadece değiştirdim. Yankı argümanına uygulamak istediğiniz sınıfı koyarsınız. – BayssMekanique

1

Bunun üstesinden gelmenin bir yolu bir yardımcı işlevle.

 
function currentPage($page){ 

    if (basename($_SERVER['PHP_SELF']) == $page) { 
     echo 'selected'; 
    } 

} 
 <li><a class="<?php currentPage('changelog.html') ?>" href="changelog.html">Changelog</a></li> 

Bunu o sayfa

Ben kodu test sığınak olmadığını kontrol etmek istediğiniz her li için bu işlevi eklemek zorunda kalacak, ancak nasıl ele genel bir fikir alacak bu tür bir şey. Umarım yardımcı olur.

+1

Bu işe yarıyor! Yaptığım şey bu işlevi kenar çubuğu dosyamın içine koydu. Harika çalışıyor! –

İlgili konular