У меня есть такой подход сейчас:Лучше динамическое меню навигации
ctop = $cnew = $cmine = '';
if($actual == 'top') $ctop = 'class="active"';
if($actual == 'last') $new = 'class="active"';
if($actual == 'mine') $cmine = 'class="active"';
$html = '<aside class="panel_derecho">
<div class="tabs"><h4>$donde</h4>
<ul>';
$js = "refrescar_submenu('last_$donde')";
$js_t = "refrescar_submenu('top_$donde')";
$js_r = "refrescar_submenu('mine_$donde')";
$html .= '<li '.$ctop.'><a href="#sub_menu" onclick="'.$js_t.'">top</a></li>';
$html .= '<li '.$cnew.'><a href="#sub_menu" onclick="'.$js.'">ultimos</a></li>';
$html .= '<li '.$mine.'><a href="#sub_menu" onclick="'.$js_r.'">like</a></li>';
$html .= ' </ul>
</aside>';
return $html;
которым работают, как ожидалось:
Он генерирует список с требуемой копией, требуемым параметром Javascript функции и активным классом (для желаемого)
Но я чувствую, что это может быть менее повторяющимся; и я уже вижу, что это будет дорого, чтобы добавить/редактировать/удалить Копирует, Params, элементы и т.д .. я просто не знаю, где Beggin ..
В случае это помогает:
$donde
представляет тип данных (статьи, песни, видео, ..)$actual
представляет собой одну atribute (новые статьи, топ статей, статьи я люблю)
Я не уверен, что вы используете фреймворк или нет, но если вы используете любую форму MVC, вы всегда можете назначить активный класс в контроллере, а затем передать его в представление. Это не намного эффективнее, чем то, что вы делаете. – Rooster
Я думаю, что, возможно, мне следует сделать асоциативные массивы со значениями, которые должны быть заполнены $ фактическим и $ donde? –