PHP-CSS-HTML applicando una classe a un tag tramite PHP con modelli
-
25-09-2019 - |
Domanda
Come indovine, sono nuovo a PHP. Grazie per l'aiuto. Ho questo pezzo di codice in un'intestazione TPL:
<div class="menu">
<ul>
<li class="selected"><a href="#">home</a></li>
<li><a href="#">carta</a></li>
<li><a href="#">delicias artesanas</a></li>
<li><a href="#">contacto</a></li>
<li><a href="#">dónde estamos</a></li>
</ul>
</div>
che vorrei chiamare con la funzione PHP include. Il fatto è che voglio chiamare questo TPL, indicando quale di LI avrà la classe "selezionata" applicata, come posso farlo? Come ti ho detto, facile per chiunque abbia esperienza di base PHP. GRAZIE.
Soluzione
Puoi basarlo da una variabile impostata nella logica di chiamata (non-tempica). Ad esempio, in Smarty potresti farlo nel PHP:
// Determine which section user is in and pass to tpl
$smarty->assign('location', 'home');
Quindi nel tuo modello puoi semplicemente controllare quella variabile:
<li{if $location eq 'home'} class="selected"{/if}><a href="#">home</a></li>
<li{if $location eq 'carta'} class="selected"{/if}><a href="#">carta</a></li>
Mantiene HTML fuori dalla logica Biz (PHP) e nella logica del display (TPL).
Altri suggerimenti
Fare una funzione per questo:
function menu($selected = null) {
echo '<ul class="menu">';
$options = array('home', 'carta', 'delicias artesanas', 'contact', 'dónde estamos');
foreach ($options as $li) {
echo '<li' . ($li == $selected ? ' class="selected"' : '').'><a href="#">'.$li.'</a></li>'."\n";
}
echo '</ul>';
}
E poi chiamalo più tardi:
menu('dónde estamos');
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow