Weiterlesen ist ein Link, Menues teilen sich eine Abfrage
In der wechselseitigen Beitragsliste stand "Weiterlesen" als reine Beschriftung da: sichtbar wie ein Knopf, aber nicht anklickbar. Jetzt ein Link, mit dem Beitragstitel im Linktext fuer Vorlesesoftware. Jedes Menue holte beim Aufloesen die vollstaendige Seitenliste selbst. Mit zwei Menuen fiel das nicht auf, mit vier - Kopf, zwei Listen im Fuss, Rechtszeile - waren es vier gleiche Abfragen je Seitenaufruf. Einmal je Anfrage gemerkt: 21 -> 18 Abfragen auf der Startseite. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6c477a52be
commit
74766f6684
4 files changed
+27
-6
No files matched your search
@@ -85,14 +85,26 @@ final class MenuRepository
|
||||
*
|
||||
* @return list<array{label: string, href: string, current: bool, children: list<array>}>
|
||||
*/
|
||||
/**
|
||||
* Die Seitenliste, die jedes Menue zum Aufloesen braucht - einmal je Anfrage.
|
||||
*
|
||||
* Vorher holte jedes Menue sie selbst. Mit zwei Menuen fiel das nicht auf, mit vieren - Kopf,
|
||||
* zwei Listen im Fuss und die Rechtszeile - waren es vier gleiche Abfragen je Seitenaufruf.
|
||||
*
|
||||
* @var array<string, array<string, mixed>>|null
|
||||
*/
|
||||
private ?array $pages = null;
|
||||
|
||||
public function resolve(array $items, string $currentPath, string $locale = 'de'): array
|
||||
{
|
||||
$pages = [];
|
||||
foreach ($this->db->fetchAllAssociative('SELECT id, path, published_revision_id, draft_revision_id FROM page WHERE website_id = ? AND locale = ? AND deleted_at IS NULL', ['default', $locale]) as $page) {
|
||||
$pages[$page['id']] = $page;
|
||||
if (null === $this->pages) {
|
||||
$this->pages = [];
|
||||
foreach ($this->db->fetchAllAssociative('SELECT id, path, published_revision_id, draft_revision_id FROM page WHERE website_id = ? AND locale = ? AND deleted_at IS NULL', ['default', $locale]) as $page) {
|
||||
$this->pages[$page['id']] = $page;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->resolveLevel($items, $pages, $currentPath, $this->settings->homePath());
|
||||
return $this->resolveLevel($items, $this->pages, $currentPath, $this->settings->homePath());
|
||||
}
|
||||
|
||||
private function resolveLevel(array $items, array $pages, string $currentPath, string $homePath): array
|
||||
|
||||
Reference in new issue
Block a user