Aggiunta di < span > tag attorno a ciascun elemento principale in Drupal

StackOverflow https://stackoverflow.com/questions/1201558

  •  05-07-2019
  •  | 
  •  

Domanda

Vorrei che i miei collegamenti principali in Drupal fossero così nel codice:

<a class="active" title="Go to the Foo Homepage" href="/"><span>Home</span></a>

Invece di:

<a class="active" title="Go to the Foo Homepage" href="/">Home</a>

Quindi posso quindi definire lo span separatamente da a .

(So che sembra una cosa un po 'strana da fare, ma ha a che fare con aggirare la mancanza di supporto di confine-raggio di IE unito all'impossibilità di impostare 2 immagini di sfondo.)

Quindi sai dove & amp; come ottengo che Drupal inserisca questi tag in tutti i miei collegamenti principali?

È stato utile?

Soluzione

Immagino, da qualche parte nella tua page.tpl.php , hai qualcosa del genere per visualizzare il menu principale:

print theme('links', $primary_links, array('class' => 'links primary-links'));

Una soluzione (potrebbe non essere la più pulita - ma dovrebbe funzionare) sarebbe quella di iterare sugli elementi di $ primary_links , per, per ciascuno,:

  • attiva la modalità HTML
  • racchiudi il titolo con < span > e </span>

Se il tuo menu ha un solo livello, suppongo che lo farebbe:

foreach ($primary_links as & $link) {
  $link['html'] = true;
  $link['title'] = '<span>' . $link['title'] . '</span>';
}

E, successivamente, puoi chiamare theme come stai già facendo ora

Detto questo, dovresti ottenere i tag < span > attorno al testo del link, senza farli iniettare nell'attributo del < a > .


Se hai più livelli nel tuo menu, dovrai scorrere più in basso; o con due loop imbricati o con una sorta di ricorsione se non si conosce la profondità dei menu.
(Ti farò divertire con quello; quello che ho detto dovrebbe essere sufficiente per iniziare ;-))


Come sidenote, questo potrebbe probabilmente essere fatto da qualche parte anche in template.php ... Potrebbe essere un posto migliore; ma ti lascerò decidere quale soluzione preferisci ...


Buon divertimento!

Altri suggerimenti

Questo dovrebbe aiutare http://drupal.org/node/221382

Scorri verso il basso fino a questo commento per la soluzione finale http://drupal.org/node/ 221382 # comment-755469 . Ci sono problemi con l'output html che vengono risolti lì.

Per la cronaca, alla fine ho usato il modulo menu_html e ho inserito le voci di menu come < span > Voce di menu 1 < / span > nei relativi dialoghi.

In effetti ho finito con < span > < span > Voce di menu espanso < / span > < / span > in uno di essi perché era espanso e aveva già un'immagine di sfondo impostato. Ora ha 3!

Almeno i miei angoli curvi sulle mie schede funzionano ora in IE. Un'altra volta in cui IE viene assorbito per 5/6 ore solo perché non supporta correttamente i CSS!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top