PHP-CSS-HTML appliquer une classe à une balise par php avec des modèles
-
25-09-2019 - |
Question
Comme vous le devinerez je suis nouveau à php. Merci de votre aide. J'ai ce morceau de code dans un tpl d'en-tête:
<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>
que je voudrais appeler avec la fonction PHP include. La chose est, je veux appeler cette tpl, ce qui indique que l'un des de li aura la classe « choisie » appliquée, comment puis-je faire? Comme je vous l'ai dit, peasy facile pour tout le monde avec une expérience de base de PHP. Je vous remercie.
La solution
Vous pouvez baser hors d'une variable qui est définie dans votre logique d'appel (non-modèle). Par exemple, dans Smarty, vous pouvez le faire en PHP:
// Determine which section user is in and pass to tpl
$smarty->assign('location', 'home');
Ensuite, dans votre modèle, vous pouvez vérifier cette variable simplement:
<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>
Le garde HTML de votre logique biz (PHP) et dans votre logique d'affichage (tpl).
Autres conseils
faire une fonction pour cela:
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>';
}
et puis juste l'appeler plus tard:
menu('dónde estamos');