PHP-CSS-HTML aplicando una clase a una etiqueta a través de PHP con plantillas
-
25-09-2019 - |
Pregunta
Como supondrá que soy nuevo en PHP. Gracias por tu ayuda. Tengo este código en un encabezado 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>
que me gustaría llamar con la función PHP incluye. La cuestión es que quiero llamar a esto TPL, lo que indica cuál de los LI tendrá la clase "seleccionada" aplicada, ¿cómo puedo hacerlo? Como te dije, Peasy fácil para cualquier persona con experiencia básica de PHP. GRACIAS.
Solución
Puede basarlo en una variable que se establece en su lógica de llamada (no plantilla). Por ejemplo, en Smarty podría hacer esto en el PHP:
// Determine which section user is in and pass to tpl
$smarty->assign('location', 'home');
Luego, en su plantilla, puede verificar esa variable:
<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 fuera de su biz lógica (PHP) y en su lógica de pantalla (TPL).
Otros consejos
hacer una función para eso:
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>';
}
Y luego llámalo más tarde:
menu('dónde estamos');
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow