Archief - Eigen drupal menu via module wilt niet tonen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

demon326

Legacy Member
Hallo allen,

Omdat het drupal menu systeem me niet toelaat om argumenten te gebruiken in menu paden ben ik genoodzaakt deze te hardcoden dmv een module om zo toch een menu te krijgen, maar het lukt me echter niet om mijn menu te doen printen.....

Na dagen hebben zitten zoeken op drupal.org en google kom ik telkens deze code:

PHP:
<?php $menu_name = 'test_menu';
$menu = menu_navigation_links($menu_name);
?>


tegen, deze hoort in de desbetreffende template te komen, maar deze toont echter niets...

De code in mijn .module file van mijn eigen module dus:
PHP:
<?php
/**
 * Implementation of hook_menu().
 */
function test_menu() {
  
  // By using the MENU_CALLBACK type, we can register the callback for this
  // path but do not have the item show up in the menu; the admin is not allowed
  // to enable the item in the menu, either.
  //
  // Notice that the 'page arguments' is an array of numbers. These will be
  // replaced with the corresponding parts of the menu path. In this case a 0
  // would be replaced by 'example', a 1 by 'baz', and like wise 2 and 3 will
  // be replaced by what ever the user provides. These will be passed as
  // arguments to the page_example_baz() function.
  $items['bands/%/album'] = array(
    'title' => 'Reviews',
    'page callback' => 'Review beschrijving',
    'page arguments' => array(1),
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );
    $items['bands/%/event'] = array(
    'title' => 'Events',
    'page callback' => 'Events beschrijving',
    'page arguments' => array(1),
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );
      $items['bands/%'] = array(
    'title' => 'Info',
    'page callback' => 'Info beschrijving',
    'page arguments' => array(1),
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );
    $items['bands/%/nieuws'] = array(
    'title' => 'Nieuws',
    'page callback' => 'nieuws beschrijving',
    'page arguments' => array(1),
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );

  return $items;
}


//edit: deze code werkt, maar geeft niet het gewenste result:
PHP:
  $menu = test_menu('test_menu, 1');
    print theme('links', $menu, array('class' => 'customtabs'));

De uitkomst is als volgt:
<code>
<ul class="customtabs"><li class="bands/%/album first"><span>albums</span></li>
<li class="bands/%/event"><span>Events</span></li>
<li class="bands/%"><span>Info</span></li>
<li class="bands/%/nieuws last"><span>Nieuws</span></li>
</ul>
[/code]

Ik ben al dagen opzoek naar een oplossing, maar snap dus echt niet wat ik fout doe :p:unsure:

dJeez

Legacy Member
Welke versie van Drupal gebruik je eigenlijk? Ik vermoed de 6, maar het is altijd handig als je dat vermeld.

Nu, 1 ding dat mij direct in het oog springt is dat je een omschrijving in de page callback hebt gezet, da's dus compleet verkeerd, dat moet de functie zijn die je wil aanroepen op het moment dat de link wordt aangeklikt. Het zou dus wel eens kunnen dat dat aan de bron van het probleem ligt. Afhankelijk van je PHP settings (nu ja, eigenlijk ook voor cleane code) is het best van helemaal in het begin van je hook_menu de items als array te definiëren (voeg dus als allereerste regel van de functie $items=array(); toe).

Ik snap overigens ook niet echt wat je precies bedoelt met het feit dat Drupal geen argumenten in menupaden accepteert. Kan je eens een voorbeeld geven van wat je wil doorgeven en wat je precies verwacht dat er dan gebeurt? Dat kan helpen...

BTW Let er ook op dat je regelmatig de menu cache eens moet leegmaken op development als je frequent dingen in de menu's zit te wijzigen.

demon326

Legacy Member
dJeez zei:
Welke versie van Drupal gebruik je eigenlijk? Ik vermoed de 6, maar het is altijd handig als je dat vermeld.

Nu, 1 ding dat mij direct in het oog springt is dat je een omschrijving in de page callback hebt gezet, da's dus compleet verkeerd, dat moet de functie zijn die je wil aanroepen op het moment dat de link wordt aangeklikt. Het zou dus wel eens kunnen dat dat aan de bron van het probleem ligt. Afhankelijk van je PHP settings (nu ja, eigenlijk ook voor cleane code) is het best van helemaal in het begin van je hook_menu de items als array te definiëren (voeg dus als allereerste regel van de functie $items=array(); toe).

Ik snap overigens ook niet echt wat je precies bedoelt met het feit dat Drupal geen argumenten in menupaden accepteert. Kan je eens een voorbeeld geven van wat je wil doorgeven en wat je precies verwacht dat er dan gebeurt? Dat kan helpen...

BTW Let er ook op dat je regelmatig de menu cache eens moet leegmaken op development als je frequent dingen in de menu's zit te wijzigen.

Het probleem is eigenlijk simpel, ik heb een grote view die informatie van verschillende node types samenvoegt op diverse pagina's met argumenten..

live voorbeeld: epica albums | ashladan.be

die pagina toont alle albums die bij deze band horen, dit zijn node referenties en zou graag als het systeem volledig af is boven bepaalde node types bepaalde links tonen, zoals bvb:
info,albums,events,..

Het "%" teken wordt dan normaal vervangen door de band naam/argument

maar drupal accepteert geen "%" teken in de url van het menu, dus kan ik views geen menu laten maken om mijn idee uit te werken:unsure:.

Dit is nu de module code:
PHP:
<?php
/**
 * Implementation of hook_menu().
 */
function test_menu() {
 $items = array();
  
  // By using the MENU_CALLBACK type, we can register the callback for this
  // path but do not have the item show up in the menu; the admin is not allowed
  // to enable the item in the menu, either.
  //
  // Notice that the 'page arguments' is an array of numbers. These will be
  // replaced with the corresponding parts of the menu path. In this case a 0
  // would be replaced by 'example', a 1 by 'baz', and like wise 2 and 3 will
  // be replaced by what ever the user provides. These will be passed as
  // arguments to the page_example_baz() function.
  $items['bands/%/album'] = array(
    'title' => 'albums',
    'page callback' => 'album_page',
    'page arguments' => array(0),
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );
    $items['bands/%/event'] = array(
    'title' => 'Events',
	'page callback' => 'evet_page',
    'page arguments' => array(0),
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );
      $items['bands/%'] = array(
    'title' => 'Info',
	'page callback' => 'info_page',
    'page arguments' => array(0),
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );
    $items['bands/%/nieuws'] = array(
    'title' => 'Nieuws',
	'page callback' => 'nieuws_page',
    'page arguments' => array(0),
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );

  return $items;
}

Ook clear ik elke keer de cache, herbouw de menu's en zet de module aan en uit, hoort voldoende te zijn :p

dJeez

Legacy Member
Bedoel je nu dat je in de detailpagina boven de node een lokaal menu wil zetten (cfr. de edit opties op een pagina als je admin bent)? Want dan moet je MENU_LOCAL_TASK gebruiken uiteraard.

Nu, als het gewoon over vaste links (met vaste omschrijving) gaat voor een specifiek nodetype waarbij je wil doorlinken dan kan je dat imho net zogoed doen door die links te zetten in een template voor dat specifieke node type. Creëer daarvoor gewoon in uw thema een node-uwcontenttype.tpl.php, dan ben je zeker dat die links steeds getoond worden als je een node van dat type weergeeft. En anders moet je eens een visuele mockup maken van wat je bedoelt :p.

demon326

Legacy Member
dJeez zei:
Bedoel je nu dat je in de detailpagina boven de node een lokaal menu wil zetten (cfr. de edit opties op een pagina als je admin bent)? Want dan moet je MENU_LOCAL_TASK gebruiken uiteraard.

Nu, als het gewoon over vaste links (met vaste omschrijving) gaat voor een specifiek nodetype waarbij je wil doorlinken dan kan je dat imho net zogoed doen door die links te zetten in een template voor dat specifieke node type. Creëer daarvoor gewoon in uw thema een node-uwcontenttype.tpl.php, dan ben je zeker dat die links steeds getoond worden als je een node van dat type weergeeft. En anders moet je eens een visuele mockup maken van wat je bedoelt :p.

De bedoeling is om het zoals hier op 9lives te krijgen, en intussen leer ik weer bij :D.

Voorbeeld op deze site:
9lives - Games - Assassin's Creed: Brotherhood - AC Brotherhood krijgt multiplayer bèta op PS3

zie de tabs info,screens, enz, dat is de bedoeling, de link is deels dynamisch :p.

PS: ik weet dat 9lives niet meer op drupal draait, maar het is mogelijk :p
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan