PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss?
bearbeitet von
@@borisbaer
> ~~~ PHP
> if (!empty($_GET['subpage'])) { $current = $_GET['subpage']; }
> ~~~
>
> Das tue ich, weil ich im Folgenden diese Variable benötige, nämlich bspw. an dieser Stelle:
>
> ~~~ PHP
> <a class="<?= $current === 'releases' ? 'current' : ''; ?>" href="releases">Releases</a>
> ~~~
Das Umkopieren von `$_GET['subpage']`{:.language-php} in eine Variable macht keinen Sinn. Du verwendest einfach bei jedem Vergleich `$_GET['subpage']`{:.language-php} und gut ist.
> Wenn also der aktuelle URL-Parameter mit dem jeweiligen if clause für `$current` übereinstimmt, dann bekommt dieser Link die class `current`, wird also hervorgehoben.
[Verwende `aria-current="page"`](https://tink.uk/using-the-aria-current-attribute/).
Eine Klasse `current` brauchst du dann nicht; du kannst den Attributselektor `[aria-current="page"]`{:.language-css} zum Stylen verwenden. (Ein Klassenselektor ist auch nur eine andere Schreibweise für einen Attributselektor.)
Was du nicht tun solltest: die aktuelle Seite verlinken. Stattdessen den Link auf den Hauptinhalt setzen (also genau dorthin, wo auch der [Skip-Link](https://blog.selfhtml.org/2018/jul/15/skipper-ahoj) hinführt).
Live und in Schwarz/Weiß zu sehen, [wo nie ein Mensch zuvor gewesen ist](https://bittersmann.de/startrek/series/tos). Das [PHP-Script](https://bittersmann.de/startrek/series/index.phps), das die Seiten generiert, kann man sich auch ansehen.
Ich hab letztens was darüber erzählt, zu sehen ist das auf [Folie 7](https://noti.st/gunnarbittersmann/HtsntM/til-where-no-one-has-gone-before#sLxpibG).
Wenn es dir nicht behagt, wiederholt `$_GET['subpage']`{:.language-php} zu verwenden und damit immer wieder dasselbe zu tun, kannst du das auch mit einer Schleife machen; so in etwa:
```php
<?php
$subpages = [
[ 'title' => 'Spiel', 'path' => 'game' ],
⋮
];
?>
<nav>
<ul>
<?php foreach ($subpages as $subpage): ?>
<li>
<a
<?php if ($subpage['path'] == $_GET['subpage']):
href="#main"
aria-current="page"
<?php elseif:
href="$subpage['path']"
<?php endif; ?>
>
<?php echo htmlspecialchars($subpage['title']); ?>
</a>
</li>
<?php endforeach; ?>
</ul>
</nav>
```
🖖 Живіть довго і процвітайте
{:@uk}
--
*When the power of love overcomes the love of power the world will know peace.*{:@en}
— Jimi Hendrix
PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss?
bearbeitet von
@@borisbaer
> ~~~ PHP
> if (!empty($_GET['subpage'])) { $current = $_GET['subpage']; }
> ~~~
>
> Das tue ich, weil ich im Folgenden diese Variable benötige, nämlich bspw. an dieser Stelle:
>
> ~~~ PHP
> <a class="<?= $current === 'releases' ? 'current' : ''; ?>" href="releases">Releases</a>
> ~~~
Das Umkopieren von `$_GET['subpage']`{:.language-php} in eine Variable macht keinen Sinn. Du verwendest einfach bei jedem Vergleich `$_GET['subpage']`{:.language-php} und gut ist.
> Wenn also der aktuelle URL-Parameter mit dem jeweiligen if clause für `$current` übereinstimmt, dann bekommt dieser Link die class `current`, wird also hervorgehoben.
[Verwende `aria-current="page"`](https://tink.uk/using-the-aria-current-attribute/).
Eine Klasse `current` brauchst du dann nicht; du kannst den Attributselektor `[aria-current="page"]`{:.language-css} zum Stylen verwenden. (Ein Klassenselektor ist auch nur eine andere Schreibweise für einen Attributselektor.)
Was du nicht tun solltest: die aktuelle Seite verlinken. Stattdessen den Link auf den Hauptinhalt setzen (also genau dorthin, wo auch der [Skip-Link](https://blog.selfhtml.org/2018/jul/15/skipper-ahoj) hinführt).
Live und in Schwarz/Weiß zu sehen, [wo nie ein Mensch zuvor gewesen ist](https://bittersmann.de/startrek/series/tos). Das [PHP-Script](https://bittersmann.de/startrek/series/index.phps), das die Seiten generiert, kann man sich auch ansehen.
Ich hab letztens was darüber erzählt, zu sehen ist das auf [Folie 7](https://noti.st/gunnarbittersmann/HtsntM/til-where-no-one-has-gone-before#sLxpibG).
Wenn es die nicht behagt, wiederholt `$_GET['subpage']`{:.language-php} zu verwenden und damit immer wieder dasselbe zu tun, kannst du das auch mit einer Schleife machen; so in etwa:
```php
<?php
$subpages = [
[ 'title' => 'Spiel', 'path' => 'game' ],
⋮
];
?>
<nav>
<ul>
<?php foreach ($subpages as $subpage): ?>
<li>
<a
<?php if ($subpage['path'] == $_GET['subpage']):
href="#main"
aria-current="page"
<?php elseif:
href="$subpage['path']"
<?php endif; ?>
>
<?php echo htmlspecialchars($subpage['title']); ?>
</a>
</li>
<?php endforeach; ?>
</ul>
</nav>
```
🖖 Живіть довго і процвітайте
{:@uk}
--
*When the power of love overcomes the love of power the world will know peace.*{:@en}
— Jimi Hendrix
PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss?
bearbeitet von
@@borisbaer
> ~~~ PHP
> if (!empty($_GET['subpage'])) { $current = $_GET['subpage']; }
> ~~~
>
> Das tue ich, weil ich im Folgenden diese Variable benötige, nämlich bspw. an dieser Stelle:
>
> ~~~ PHP
> <a class="<?= $current === 'releases' ? 'current' : ''; ?>" href="releases">Releases</a>
> ~~~
Das Umkopieren von `$_GET['subpage']`{:.language-php} in eine Variable macht keinen Sinn. Du verwendest einfach bei jedem Vergleich `$_GET['subpage']`{:.language-php} und gut ist.
> Wenn also der aktuelle URL-Parameter mit dem jeweiligen if clause für `$current` übereinstimmt, dann bekommt dieser Link die class `current`, wird also hervorgehoben.
[Verwende `aria-current="page"`](https://tink.uk/using-the-aria-current-attribute/).
Eine Klasse `current` brauchst du dann nicht; du kannst den Attributselektor `[aria-current="page"]`{:.language-css} zum Stylen verwenden. (Ein Klassenselektor ist auch nur eine andere Schreibweise für einen Attributselektor.)
Was du nicht tun solltest: die aktuelle Seite verlinken. Stattdessen den Link auf den Hauptinhalt setzen (also genau dorthin, wo auch der [Skip-Link](https://blog.selfhtml.org/2018/jul/15/skipper-ahoj) hinführt).
Live und in Schwarz/Weiß zu sehen, [wo nie ein Mensch zuvor gewesen ist](https://bittersmann.de/startrek/series/tos). Das [PHP-Script](https://bittersmann.de/startrek/series/index.phps), das die Seiten generiert, kann man sich auch ansehen.
Ich hab letztens was darüber erzählt, su sehen ist das auf [Folie 7](https://noti.st/gunnarbittersmann/HtsntM/til-where-no-one-has-gone-before#sLxpibG).
Wenn es die nicht behagt, wiederholt `$_GET['subpage']`{:.language-php} zu verwenden und damit immer wieder dasselbe zu tun, kannst du das auch mit einer Schleife machen; so in etwa:
```php
<?php
$subpages = [
[ 'title' => 'Spiel', 'path' => 'game' ],
⋮
];
?>
<nav>
<ul>
<?php foreach ($subpages as $subpage): ?>
<li>
<a
<?php if ($subpage['path'] == $_GET['subpage']):
href="#main"
aria-current="page"
<?php elseif:
href="$subpage['path']"
<?php endif; ?>
>
<?php echo htmlspecialchars($subpage['title']); ?>
</a>
</li>
<?php endforeach; ?>
</ul>
</nav>
```
🖖 Живіть довго і процвітайте
{:@uk}
--
*When the power of love overcomes the love of power the world will know peace.*{:@en}
— Jimi Hendrix