italia / design-comuni-wordpress-theme

Tema Wordpress per i siti dei comuni italiani
GNU Affero General Public License v3.0
33 stars 33 forks source link

Main menu dropdown non funziona #413

Open RukawaShow opened 7 months ago

RukawaShow commented 7 months ago

Prerequisiti

Descrivi il problema

Salve a tutti ho appena installato il tema 1.7.5 per sviluppo di sito per comuni ma nel momento in cui voglio creare/modificare il Main menu con "sottopagine" il dropdown non funziona mi vengono messi i menu uno vicono all'altro.

Cosa dovrei fare? grazie mille a chi risponderà.

screen_1 Screenshot_1

Includi link o screenshot

No response

Su quale sisitema operativo stai riscontrando il problema?

Windows

Su quale browser stai riscontrando il problema?

Qualsiasi

Che versione del tema stai utilizzando?

1.7.5

RukawaShow commented 7 months ago

credo che il problema sia il walker standard ovvero:

class Main_Menu_Walker extends Walker_Nav_Menu { function start_el(&$output, $item, $depth=0, $args=[], $id=0) { $output .= "

mariantanase commented 7 months ago

Ciao, il menu di primo livello non supporta un sotto-menu in modo nativo

RukawaShow commented 7 months ago

grazie per la risposta ma nella "pagina statica" è previsto come potrei risolvere questo problema?

RukawaShow commented 7 months ago

Ciao, il menu di primo livello non supporta un sotto-menu in modo nativo

oppure quale tipo di menu dovrei usare?

questo è quello che uso adesso

enrimk commented 7 months ago

ma nella "pagina statica" è previsto

In quale pagina? Nella demo online delle pagine statiche il menù primario non ha sottomenù.

Quindi non credo che ci sia un riferimento "ufficiale" per il tema Comuni. È vero che il componente di Boostrap Italia esiste, e si potrebbe usare quello per l'html. Ma:

credo che il problema sia il walker standard [...] [...] quale tipo di menu dovrei usare?

Il walker del tema, appunto, così com'è non è adatto. Com'è, si limita a: 1) aggiungere gli attrib. data-element al link in base al titolo, 2) l'attivazione del menù in base al "gruppo" e al title, 3) una classe css al tag <li>, e 4) a sostituire l'<a> con uno <span> se l'url è annullato. Cose, tra parentesi, che forse si sarebbero potute ottenere anche solo con i filtri standard in _Walker_Nav_Menu::start_el()_. Filtri che invece sono stati eliminati (per "sicurezza"?), e non si possono più usare per altre correzioni, in un child theme ad es. Per fargli usare l'html di BI, bisogna ridefinire in override anche i metodi _startlvl() e _endlvl(), per racchiudere la <ul/> dentro ai <div/> richiesti. E poi far reagire _startel() a $this->has_children, per aggiungere classi varie, dropdown-toggle, icone, ecc.

RiccardoBorchi commented 6 months ago

Io, invece, ho trovato un problema anche per semplici voci di menù di primo livello.

Nella homepage tutte le voci del menù principale risultano avere la classe "active". Mentre, nelle altre pagine, nessuna ha la classe "active", nemmeno quella relativa alla pagina corrente. Sapete come mai?

Il problema, in pratica, sta qua:

if ($item->attr_title == $group) { $active_class = 'active'; }

In homepage, in pratica, le variabili _$item->attrtitle e $group sono vuote, per quello viene applicata la classe "active". Mentre, nelle altre pagine, risulta non esserci l'attributo title, di base. E se lo inserisco manualmente (da "Aspetto > Menu"), non funziona lo stesso, a meno che non lo inserisca come se fosse uno slug (tipo "vivere-il-comune").

Non capisco se succeda così a chiunque oppure se c'è un problema con la mia installazione.

mariantanase commented 6 months ago

Io, invece, ho trovato un problema anche per semplici voci di menù di primo livello.

Nella homepage tutte le voci del menù principale risultano avere la classe "active". Mentre, nelle altre pagine, nessuna ha la classe "active", nemmeno quella relativa alla pagina corrente. Sapete come mai?

Il problema, in pratica, sta qua:

if ($item->attr_title == $group) { $active_class = 'active'; }

In homepage, in pratica, le variabili _$item->attrtitle e $group sono vuote, per quello viene applicata la classe "active". Mentre, nelle altre pagine, risulta non esserci l'attributo title, di base. E se lo inserisco manualmente (da "Aspetto > Menu"), non funziona lo stesso, a meno che non lo inserisca come se fosse uno slug (tipo "vivere-il-comune").

Non capisco se succeda così a chiunque oppure se c'è un problema con la mia installazione.

Vedi qui: https://github.com/italia/design-comuni-wordpress-theme/issues/241#issuecomment-1498571644

RiccardoBorchi commented 6 months ago

Io, invece, ho trovato un problema anche per semplici voci di menù di primo livello. Nella homepage tutte le voci del menù principale risultano avere la classe "active". Mentre, nelle altre pagine, nessuna ha la classe "active", nemmeno quella relativa alla pagina corrente. Sapete come mai? Il problema, in pratica, sta qua: if ($item->attr_title == $group) { $active_class = 'active'; } In homepage, in pratica, le variabili _$item->attrtitle e $group sono vuote, per quello viene applicata la classe "active". Mentre, nelle altre pagine, risulta non esserci l'attributo title, di base. E se lo inserisco manualmente (da "Aspetto > Menu"), non funziona lo stesso, a meno che non lo inserisca come se fosse uno slug (tipo "vivere-il-comune"). Non capisco se succeda così a chiunque oppure se c'è un problema con la mia installazione.

Vedi qui: #241 (comment)

Grazie!

Ho letto e, infatti, viene suggerito di inserire l'attributo title come se fosse uno slug (tipo "vivere-il-comune"). Mi chiedevo se, invece, fosse possibile un qualche automatismo, anche inserendo, eventualmente, l'attributo title in altro modo.

Avrei risolto, momentaneamente, cambiando il controllo che permette di inserire la classe "active" (basandomi sull'URL, anziché sull'attributo title).

Lucafe1311 commented 4 months ago

Io, invece, ho trovato un problema anche per semplici voci di menù di primo livello. Nella homepage tutte le voci del menù principale risultano avere la classe "active". Mentre, nelle altre pagine, nessuna ha la classe "active", nemmeno quella relativa alla pagina corrente. Sapete come mai? Il problema, in pratica, sta qua: if ($item->attr_title == $group) { $active_class = 'active'; } In homepage, in pratica, le variabili _$item->attrtitle e $group sono vuote, per quello viene applicata la classe "active". Mentre, nelle altre pagine, risulta non esserci l'attributo title, di base. E se lo inserisco manualmente (da "Aspetto > Menu"), non funziona lo stesso, a meno che non lo inserisca come se fosse uno slug (tipo "vivere-il-comune"). Non capisco se succeda così a chiunque oppure se c'è un problema con la mia installazione.

Vedi qui: #241 (comment)

Grazie!

Ho letto e, infatti, viene suggerito di inserire l'attributo title come se fosse uno slug (tipo "vivere-il-comune"). Mi chiedevo se, invece, fosse possibile un qualche automatismo, anche inserendo, eventualmente, l'attributo title in altro modo.

Avrei risolto, momentaneamente, cambiando il controllo che permette di inserire la classe "active" (basandomi sull'URL, anziché sull'attributo title).

Ciao, ho lo stesso problema. Puoi spiegarmi più in dettaglio come hai effettuato la modifica? Grazie

RiccardoBorchi commented 4 months ago

Io, invece, ho trovato un problema anche per semplici voci di menù di primo livello. Nella homepage tutte le voci del menù principale risultano avere la classe "active". Mentre, nelle altre pagine, nessuna ha la classe "active", nemmeno quella relativa alla pagina corrente. Sapete come mai? Il problema, in pratica, sta qua: if ($item->attr_title == $group) { $active_class = 'active'; } In homepage, in pratica, le variabili _$item->attrtitle e $group sono vuote, per quello viene applicata la classe "active". Mentre, nelle altre pagine, risulta non esserci l'attributo title, di base. E se lo inserisco manualmente (da "Aspetto > Menu"), non funziona lo stesso, a meno che non lo inserisca come se fosse uno slug (tipo "vivere-il-comune"). Non capisco se succeda così a chiunque oppure se c'è un problema con la mia installazione.

Vedi qui: #241 (comment)

Grazie! Ho letto e, infatti, viene suggerito di inserire l'attributo title come se fosse uno slug (tipo "vivere-il-comune"). Mi chiedevo se, invece, fosse possibile un qualche automatismo, anche inserendo, eventualmente, l'attributo title in altro modo. Avrei risolto, momentaneamente, cambiando il controllo che permette di inserire la classe "active" (basandomi sull'URL, anziché sull'attributo title).

Ciao, ho lo stesso problema. Puoi spiegarmi più in dettaglio come hai effettuato la modifica? Grazie

Ciao, certo.

Ho modificato le righe 25-27 del file main-menu.php (nella cartella "walkers") nel seguente modo:

if (!empty($group) && str_contains($item->url, $group)) { $active_class = 'active'; }