Aggiunta di tag a menu

7 contenuti / 0 new
Ultimo contenuto
Aggiunta di tag a menu

Ciao a tutti, piano piano sto cercando di finire il mio primo sito in Drupal (e sarebbe anche ora...ihihihih) e come sempre m'imbatto nell'ennesimo problema.
Premetto che stò usando i seguenti moduli e temi:
Tema; Blueprint;
Moduli: menu nice, devel, DHTML menu, ecc...

Il problema è questo: il menu dei "primary link" con il menu_nice, mi stampa questo codice html:

<ul class="nice-menu nice-menu-down" id="nice-menu-1">
      <span id="thmr_222" class="thmr_call">
           <li class="menu-310 menu-path-front active-trail first  odd ">
                 <span id="thmr_223" class="thmr_call">
                         <a href="/" title="Home page" id="dhtml_menu-310" class="active">Home page</a>
                 </span>
           </li>
           ........

per mie esigenze vorrei che, in questo esempio, la scritta "Home page" sia racchiusa da un tag span in modo da avere:

<ul class="nice-menu nice-menu-down" id="nice-menu-1">
      <span id="thmr_222" class="thmr_call">
           <li class="menu-310 menu-path-front active-trail first  odd ">
                 <span id="thmr_223" class="thmr_call">
                         <a href="/" title="Home page" id="dhtml_menu-310" class="active"><span>Home page</span></a>
                 </span>
           </li>
           ........

Con il modulo devel ho visto che la funzione che viene chiamata è "heme_menu_item_link()". Dove posso intervenire per ottenere il risultato voluto?

Il modulo devel mi indica anche queste cose ma non so dargli un significato:

Parents: theme_nice_menus_build < block < theme_blocks < page
Function called:
    theme_menu_item_link()
Candidate function names:
    blueprint_menu_item_link < phptemplate_menu_item_link < theme_menu_item_link
Duration: 0.14 ms
... (Array, 1 element)
      link (Array, 40 elements)
            load_functions (NULL)
            to_arg_functions (NULL)
            access_callback (NULL)
            access_arguments (NULL)
            page_callback (NULL)
            page_arguments (NULL)
            title (String, 9 characters ) Home page
            title_callback (NULL)
            title_arguments (NULL)
            type (NULL)
           description (NULL)
           menu_name (String, 13 characters ) primary-links
           mlid (String, 3 characters ) 310
           plid (String, 1 characters ) 0
           link_path (String, 7 characters ) <front>
           router_path (String, 0 characters )
           link_title (String, 9 characters ) Home page
           options (Array, 1 element)
                attributes (Array, 2 elements)
                       title (String, 9 characters ) Home page
                            id (String, 14 characters ) dhtml_menu-310
          module (String, 4 characters ) menu
          hidden (String, 1 characters ) 0
          external (String, 1 characters ) 1
          has_children (String, 1 characters ) 0
          expanded (String, 1 characters ) 0
          weight (String, 1 characters ) 0
          depth (String, 1 characters ) 1
          customized (String, 1 characters ) 1
          p1 (String, 3 characters ) 310
          p2 (String, 1 characters ) 0
          p3 (String, 1 characters ) 0
          p4 (String, 1 characters ) 0
          p5 (String, 1 characters ) 0
          p6 (String, 1 characters ) 0
          p7 (String, 1 characters ) 0
          p8 (String, 1 characters ) 0
          p9 (String, 1 characters ) 0
          updated (String, 1 characters ) 0
          in_active_trail (Boolean) FALSE
          access (Integer) 1
          href (String, 7 characters ) <front>
          localized_options (Array, 1 element)

Ciao nextpic ,
grazie per i tuoi messaggi, sai ho dato un'occhiata veloce al tema blueprint nel file page.tpl.php e ti dò una dritta veloce: aggiungi il tag alla riga che ti interessa ad esempio riga 56

<?php
 
print '<h2>'. $title .'</h2>';
?>

cambiala con

<?php
 
print '<h2><span>'. $title .'</span></h2>';
?>

Spero che basti! Ciao

Di nulla Danzi, grazie a te! Il codice di page.tpl.php l'ho modificato così:

<?php print $header; ?>
<?php if (!isset($navigazione)): ?> <!--controllo aggiunto per l'esistenza o meno della regione navigazione-->
<?php if (isset($primary_links)) : ?>
  <?php print theme('links', $primary_links, array('id' => 'nav', 'class' => 'links')) ?>
<?php endif; ?>
<?php if (isset($secondary_links)) : ?>
  <?php print theme('links', $secondary_links, array('id' => 'subnav', 'class' => 'links')) ?>
<?php endif; ?>
<?php endif ?> <!-- fine dell'aggiunta -->
  </div>
  <?php if($navigazione): ?> <!-- codice agiunto per la creazione dell'area navigazione -->
  <div class="<?php print $navigazione_classes; ?>"><?php print $navigazione?></div>
  <?php endif?>

Il menu "primary link" l'ho aggiunto come blocco di nice_menu alla regione "navigazione", in più ho un altro menu creato da me e chiamato "menu2" che ho posizionato sulla colonna di destra. Io vorrei che entrambi i link di questi menu siano formattati nel seguiente modo:
....<a .....><span>Voce1</span></a>.....
dove posso intervenire?

la funzione che si occupa della stampa dei menu, si trova in includes/menu.inc:1127, è la seguente:

function theme_menu_item_link($link) {
  if (empty($link['localized_options'])) {
    $link['localized_options'] = array();
  }
  return l($link['title'], $link['href'], $link['localized_options']);
}

anche se non si dovrebbe, per fare delle prove l'ho modificata come segue:
function theme_menu_item_link($link) {
  if (empty($link['localized_options'])) {
    $link['localized_options'] = array();
  }
   $link['title'] = '<span>'. $link['title'] .'</span>';
  return l($link['title'], $link['href'], $link['localized_options']);
}

ma il risultato è che vedo a schermo i miei tag span...

Il duro lavoro fatto con passione, ripaga sempre!!!!

Bravo hai osservato molto il codice... Allora mi viene in mente di dirti come si usa la funzione l() di Drupal qui trovi tutti i modi per scriverla ma a te dovrebbe bastare:

<?php
$linkurl
= l($link['title'], $link['href'], $link['localized_options']);
$var  = "<span>" . $linkurl. "</span>";
return
$var;
 
?>

Cioè:

<?php
function theme_menu_item_link($link) {
  if (empty(
$link['localized_options'])) {
   
$link['localized_options'] = array();
  }
  
$linkurl = l($link['title'], $link['href'], $link['localized_options']);
  
$var  = "<span>" . $linkurl. "</span>";
   return
$var;
}
?>

Altrimenti devi utilizzare:
$titolo = $link['title'];
$itemlink = $link['href'];
$output .= '<a href="'. check_url($itemlink) .'"><span>'. check_plain($titolo) ."</span></a>\n";

ma non so se è opportuno. Ciao!

Danzi grazie per il codice, non capisco se il tuo è un complimento o pure... :-)

Ho provato il codice

<?php
function theme_menu_item_link($link) {
  if (empty(
$link['localized_options'])) {
   
$link['localized_options'] = array();
  }
  
$linkurl = l($link['title'], $link['href'], $link['localized_options']);
  
$var  = "<span>" . $linkurl. "</span>";
   return
$var;
}
?>

direttamente su includes\menu.inc, perche se lo metto nel template.php rinomunando la funzione bleprint_menu_item_link, non mi fa alcuna modifica. Il risultato ottenuto è che il tag "" racchiude il tag "", mentre io vorrei che il tag "" racchiuta il neme che viene assegnato al collegamento che credo sia dettato da $link['title'] ad esempio:Home page.

Il duro lavoro fatto con passione, ripaga sempre!!!!

E' un complimento! ;)
Scusa se ho messo i puntini, in effetti può suonare strano, ma è grazie al codice che hai postato che sono riuscita a darti la dritta. Vedi per fare ciò che vuoi con Drupal è piuttosto difficile però questa funziona perchè l'ho provata:

<?php
 
function theme_menu_item_link($link) {
  if (empty(
$link['localized_options'])) {
   
$link['localized_options'] = array();
  }
 
//return l($link['title'], $link['href'], $link['localized_options']);
  
$titolo = $link['title'];
  
$itemlink = $link['href'];
  
$output .= '<a href="'. check_url($itemlink) .'"><span>'. check_plain($titolo) ."</span></a>\n";
   return
$output;
}
?>

il risultato è

<li class="leaf  dhtml-menu "><a href="calendar"><span>Calendario</span></a>

Ciao alla prossima!

Danzi grazie grazie e ancora grazie!!!!!!! Perfetto!!!!
Ora però ho modificato il codice direttamente nel menu.inc, come posso riportare il codice nel template.php in modo da essere immune da modifiche? Ho provato a riscrivere la funzione "theme_menu_item_link" modificata nel file template.php rinominandola "blueprint_menu_item_link" ma non mi fa più la variazione.....?

Il duro lavoro fatto con passione, ripaga sempre!!!!