Bu soru burada zaten bir cevabı var:
- Navigation, highlight current page 3 answers
Bu soru burada zaten bir cevabı var:
Menüsünü oluşturmak için bir yardımcı ve / veya kısmi kullanın. Yani modül 'varsayılan' bir kısmi _navigation.php söylüyorlar sağlar:
// in layout:
<?php include_partial('default/navigation', array(
'navigation'=>$array,
'active'=>has_slot('navigationActiveUrl')
? get_slot('navigationActiveUrl')
: null)
); ?>
// in modules/default/templates/_navigation.php
<?php if(isset($navigation)): ?>
<ul>
<?php foreach($navigation as $name => $url): ?>
<?php echo content_tag('li', link_to($name, $url), array('class' =>
(isset($active) && $active == $url ? 'active' : null)
)); ?>
<?php endforeach; ?>
</ul>
<?php endif; ?>
// in some template file:
<?php slot('navigationActiveUrl'); ?>/internal/uri<?php end_slot(); ?>
Eğer alışkanlık çok değiştirmek gerekiyorsa ayrıca sadece orada bir yardımcı ve sabit kod html kullanabilirsiniz. Kısmi kullanarak sadece size yardımcı işlevini değiştirmeden biçimlendirme değiştirmek için kolay bir yol sağlar. Gibi bilge bir yardımcı işlev yapmak ve hala aynı kısmi çağrı olabilir.
Düşünmelisiniz alternatif bir yöntem mümkünse JavaScript kullanıyor. JQuery kullanarak bir örnek vereceğim
$('#nav li a').each(function(){
//You might have to do some string manipulation on the line below, but you get the idea
if($(this).attr('href') == window.location.pathname) { $(this).addClass('current'); };
});
Ben JS her zaman bir seçenek olmadığını biliyoruz, ama oldukça düzgün ve güzel çalışır. Wild guess: php kod kalanı bağlantı Seçili sınıfı ya da değil, sadece css veya javascript kodu olacak olup olmadığını umurumda olmaz. Bu durumda, yukarıdaki yöntem, çok kötü bir seçenek değildir
Ben basit bir yaklaşım için gitmek (ama yoğun bir kaynak olabilir):
<ul id="nav">
<li<?php echo ($this->getActionName('item1')) ? ' class="current"' : ''; ?>><a href="item1">Item 1</a></li>
<li<?php echo ($this->getActionName('item2')) ? ' class="current"' : ''; ?>><a href="item1">Item 2</a></li>
<li<?php echo ($this->getActionName('item3')) ? ' class="current"' : ''; ?>><a href="item1">Item 3</a></li>
<li<?php echo ($this->getActionName('item4')) ? ' class="current"' : ''; ?>><a href="item1">Item 4</a></li>
</ul>
Ben her zaman slot() kullanmak ve seçilmiş gibi is_slot sekmeleri işaretleyin.
Ben şablonda görüntülemek her sayfada ben yuvaları adıyla bir yuvaya sahip sayfasını 'işaretlemek'
/ Projeler -> yuvası ('toptabs') end_slot projeleri () ve koyun
if get_slot('toptabs') == 'projects' { class="selected" }
Aptalca bir çözüm ama hızlı ve iyi çalışıyor.