Taxonomy Menu, Tema e Drupal 6: funzione per mostrare il menu in orizzontale

13 contenuti / 0 new
Ultimo contenuto
Taxonomy Menu, Tema e Drupal 6: funzione per mostrare il menu in orizzontale

Ragazzi,
sul mio tema core c'è una funzione che mostra i menu primary links e un'altra che mostra il menu secondary links
La funzione è questa

<?php if (isset($primary_links)) : ?>
<?php print theme('links', $primary_links, array('class' => 'links primary-links')) ?>
<?php endif; ?>

Io ho creato un nuovo menu chiamato PIPPO, con all'interno voci generate da un vocabolario, tramite Taxonomy Menu, ed ho bisogno di ottenere lo stesso effetto del menu primary links, almeno x testare e capire.

Ho provato a fare una funzione di questo tipo:

<?php if (isset($pippo)) : ?>
<?php print theme('links', $pippo, array('class' => 'links primary-links')) ?>
<?php endif; ?>

Ma a video non mi viene mostrato nulla.

Vorrei capire se è corretto quello che ho fatto o se c'è un metodo specifico per utilizzare i menu creati dal'amministratore del sito.

Potete aiutarmi?

Credo che tu voglia creare menu drop-down. Per Drupal 6 puoi leggere qui:
Guida Drupal 6.x - Creare un menu a discesa (dropdown) primary e secondary links
http://danzisiweb.it/content/guida-drupal-6x-creare-un-menu-discesa-dropdown-primary-e-secondary-links

Fammi sapre se ti è utile

no!.. niente menu dropdown a me interessa solo poter aggiungere le classi css di primary links ad un menu creato da me, al fine di mostrarlo in orizzontale.

Però non va, nel senso che non riesco a popolare l'array con le voci del menu "pippo"

<?php if (isset($pippo)) : ?>
<?php print theme('links', $pippo, array('class' => 'links primary-links')) ?>
<?php endif; ?>

Questo articolo potrebbe essere utile:
http://drupal.org/node/127946

Praticamente in admin/build/menu/settings imposti (dopo averlo creato, come mi sembra hai già fatto) la Fonte per i link secondari il tuo menu (tuo es; pippo)
Ma il codice è questo:

<?php if (isset($secondary_links)) : ?>
          <?php print theme('links', $secondary_links, array('class' => 'links primary-links')) ?>
        <?php endif; ?>

Da posizionare dove vuoi nel file page.tpl.php

Ciao
danzisiweb.it

Non è possibile questa soluzione, perchè se no l'avrei già utilizzata.

Un page.tpl.php ho già quel codice ed il secondary links lo utilizzo già!

Mi seve un modo per usare un menu al di fuori primary links e secondary links.

A parte questo mi hai fatto capire che stavo proprio sbagliando ad usare quel codice. Mi serve un'altra soluzione che NON conosco.

non capisco: ogni menu ha un suo blocco. non è sufficientre posizionarlo nella regione appropriata e applicare gli stili CSS per un menu orizzontale?

Si in effetti, ho testato (in Drupal 6 in locale) che Drupal appunto, ti permette di creare altri menu, ma vengono messi nei blocchi e questo mi sembra più che ovvio. Primary links e secondary links sono variabili di sistema.

Navigando:
http://www.freesoftwaremagazine.com/books/drupal_tricks/tertiary_menu#

Ma non è indicata la versione, provaci...

@Bohz
la questione è...
Visto che si poteva fare con primary e secondary perchè non farlo anche con altri?!
Aggiungerò l'n-esima region e posizionerò il blocco (x far prima). Ci metto meno tempo così che studiandomi un'alternativa.

Ma a questo punto mi sorge una nuova domanda:
- "E' possibile all'interno di page.tpl.php richiamare un blocco direttamente via php, senza dover popolare alcuna region?

Quote:
Visto che si poteva fare con primary e secondary perchè non farlo anche con altri?!

perchè la variabile $pippo semplicemente non c'è.
per quello io uso
<?php
 
print theme('menu_tree', menu_tree('menu-name'));
?>

oppure se si tratta di un sotto livello dei primary
<?php
  $tertiary_links
= menu_navigation_links(variable_get('menu_primary_links_source', 'primary-links'), 2);
  print
theme('links', $tertiary_links, array('id' => 'tertiary'));
?>

Quote:
- "E' possibile all'interno di page.tpl.php richiamare un blocco direttamente via php, senza dover popolare alcuna region?

così?
<?php
$block
= module_invoke('module_name', 'block', 'view', 0);
print
$block['content'];
?>

@jscm
Si bohz ha postato un bel codice.
Ho comunque trovato anche questa soluzione, pensa imposto la variabile $pippo in 2 passi (che io chiamerò $tertiary_links)

1. Veniamo al codice da mettere in template.php

<?php
/**
* Returns an array containing the tertiary links based on the primary menu.
*/
function menu_tertiary_links() {
 
$primary = variable_get('menu_primary_menu', 0);
 
$secondary = variable_get('menu_secondary_menu', 0);
  if (!
$primary || !$secondary) {
   
//primary and/or secondary links disabled - ergo no tertiary links should be available
   
return NULL;
  }
  if (
$secondary != $primary) {
   
//secondary menu is different from primary - return children of explicitly defined secondary
   
return menu_primary_links(2, $secondary);
  } else {
   
//all based on primary - return the third level accordingly
   
return menu_primary_links(3, $primary);
  }
}
function
_phptemplate_variables($hook, $vars = array()) {
 
$vars['tertiary_links'] = menu_tertiary_links();
  return
$vars;
}
?>

2. Codice da mettere in page.tpl.php
<?php if ($tertiary_links): ?>
<div id="tertiary-links">
  <?php print theme('links', $tertiary_links, array('class' => 'links primary-links')) ?>
</div>
<?php endif; ?>

Adesso puoi utilizzare la classe 'links primary-links'
Che ne dici?

@Bohz

Quote:
<?php
$block
= module_invoke('module_name', 'block', 'view', 0);
print
$block['content'];
?>

Forse mi sfugge qualcosa, o meglio.. non sono preparato.
ma questo module_invoke vuole anche il module_name e così via... e se a me manca o non lo so?

Quote:

<?php
print theme('menu_tree', menu_tree('menu-name'));
?>

Qui tu usi un certo menu_tree e menu_name ... ma che sarebbero?

@danzisi
a me sembra che la function giri sempre attorno a secondary menu e primary menu. può anche essere che mi sbagli

Io invece ho un terzo menu non associato ne a primary ne a secondary

Quote:
... e se a me manca o non lo so?

???
se è un blocco di menu, il modulo sarà 'menu'; se è un blocco custom, il modulo sarà 'block'
Quote:
Qui tu usi un certo menu_tree e menu_name ... ma che sarebbero?

menu_tree è una funzione di theming; menu_name è il nome del menu
prova con
<?php
print theme('menu_tree', menu_tree('primary-links'));
?>