Antwort an „Rolf B“ verfassen

Hallo borisbaer,

du kannst die Generierung der "current page" Markierung in eine Funktion auslagern. So zum Beispiel:

   function mark_current_subpage($subpage_id) {
      return (($_GET['subpage'] ?? 'game') == $subpage_id)
          ?  "aria-current='page'"
          : "";
   }
   
   function game()
   {
?>
	<a <?= mark_current_subpage('game') ?> href="game">Spiel</a>
<?php 
   }

Das ?? ist der "Null-Koaleszenz" Operator (null coalescing). Er liefert einen Defaultwert, wenn ein Wert NULL ist oder ein Array-Eintrag nicht existiert. Ich habe 'game' als Defaultwert gesetzt, weil das bei Dir die Defaultseite zu sein scheint, wenn als subpage nichts geliefert wird.

Auf diese Weise lässt sich die Generierung der current-page Markierung auf einen Einzeiler reduzieren. Ob Du nun Gunnars Vorschlag folgst und aria-current='page' setzt oder bei class='current' bleibst, ist deine Entscheidung.

Im CSS kannst Du das aria-current Attribut so prüfen:

a[aria-current=page] {
   ...
}

Statt in einer Funktion jedesmal neu zu ermitteln, ob subpage gesetzt ist, könntest Du das auch einmal tun, an der Stelle, wo Du das Menü generierst. Ob das sinnvoll ist, hängt davon ab, ob das nur eine einzige Stelle ist oder ob sich das durch den Code verteilt.

Aber wenn's nur eine Stelle ist, kannst Du den Namen der angeforderten Subpage einmal ermitteln und dann den Funktionen, die den Link erzeugen, als Parameter übergeben.

ODER Du machst eine Klasse, die die Menü-Methoden enthält, und setzt dort den Namen der aktuellen Seite als Eigenschaft ein.

Du hast die Wahl der Qual.

Rolf

--
sumpsi - posui - obstruxi
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen