Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

CP sidebar checks every site for each navigation

Aperta Adatta ai principianti
#15,667 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@lazerg ci sta già lavorando.

Dal 18/10/2026.

  • #15668 di @lazerg — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
laravel, mariadb, php

Direzione di ricerca

Leggi src/CP/Navigation/CoreNav.php nella sezione del filtro e della mappatura mostrati nell’issue, poi confronta la chiamata proposta con la ricerca su un singolo sito introdotta in #14988. Conferma che la barra laterale controlla la disponibilità della navigazione nel sito selezionato senza esaminare l’albero di ogni sito. Il lavoro è completato quando le richieste CP evitano le query ripetute per ogni sito e la visibilità della navigazione rimane corretta.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

multisite performance
Bug description

The CP gets slower as you add sites, even on pages unrelated to navigation.

I seeded 1,218 sites and 3 navigations. Each CP request ran ~3,670 queries. The queries came from src/CP/Navigation/CoreNav.php, which checks every site's tree to find out whether a navigation exists in the selected site.

Proposed fix

This follows the same approach as #14988, which made existsIn() a single-site lookup.

Before:

    ->filter(function ($nav) { // line 115
        return User::current()->can('configure navs')
            || $nav->sites()->contains(Site::selected()->handle());
    })
    ->map(function ($nav) {
        $availableInSelectedSite = Site::hasMultiple()
            ? $nav->sites()->contains(Site::selected()->handle())
            : true;

After:

    ->filter(function ($nav) {
        return User::current()->can('configure navs')
            || $nav->existsIn(Site::selected()->handle());
    })
    ->map(function ($nav) {
        $availableInSelectedSite = Site::hasMultiple()
            ? $nav->existsIn(Site::selected()->handle())
            : true;
How to reproduce
  1. Use multisite with a large number of sites (I seeder 1,218).
  2. Create a few navigations with a tree in one site.
  3. Log in as a super user and open any CP page.
Logs

Environment
Environment
Laravel Version: 13.35.0
PHP Version: 8.5.10
Composer Version: 2.10.2
Environment: local
Debug Mode: ENABLED
Maintenance Mode: OFF
Timezone: UTC
Locale: en

Cache
Config: NOT CACHED
Events: NOT CACHED
Routes: NOT CACHED
Views: CACHED

Drivers
Cache: file
Database: mariadb
Logs: stack / daily
Mail: log
Queue: redis
Session: file

Storage
public/storage: NOT LINKED

Laradocs
AI Chat: disabled
Banner: disabled
Caching: enabled
Docs Path: docs
Route Prefix: /communications/cms/help
Search Driver: auto
Theme: auto

Statamic
Addons: 4
License Key: Set
Sites: 1218 (Abbott, Fadel and Denesik, Abbott-Wiegand, Abernathy Group, and 1215 more)
Stache Watcher: Enabled (auto)
Static Caching: Disabled
Version: 6.35.1 PRO

Statamic Addons
statamic/audit-log: 1.1.1
statamic/collaboration: 2.0.1
statamic/eloquent-driver: 5.12.2
statamic/seo-pro: 7.15.1

Statamic Eloquent Driver
Addon Settings: eloquent
Asset Containers: eloquent
Assets: eloquent
Blueprints: eloquent
Collection Trees: eloquent
Collections: eloquent
Entries: eloquent
Fieldsets: file
Form Submissions: eloquent
Forms: eloquent
Global Sets: eloquent
Global Variables: eloquent
Navigation Trees: eloquent
Navigations: eloquent
Revisions: eloquent
Sites: eloquent
Taxonomies: eloquent
Terms: eloquent
Tokens: eloquent
Installation

Existing Laravel app

Additional details

No response

Lingua principale
PHP
Stelle
4.9k
Fork
647
Merge medio
1g 17h
PR unite (30g)
111

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di statamic/cms

Tutte le issue di statamic/cms

Issue simili

Altre issue su PHP

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.