Posted by RTauson on August 27, 2008 at 3:09pm
Är det någon som kan förklara hur jag skapar ett meny val från en modul rent programmatiskt ?
Använder Drupal 6 och kan inte hitta (måste vara dålig på att leta ?!) någon "how-to", skulle vilja se ett exempel på en meny länk som öppnar upp en extern länk samt en som öppnar upp en intern länk.
Tacksam för svar.
Comments
Spana in dokumentationen
Spana in dokumentationen för hook_menu().
Säg att din modul heter "minmodul". Isåfall skulle koden för ditt första menyval se ut så här:
<?php
function minmodul_menu() {
$menu = array();
$menu['minsida'] = array(
'title' => 'En sproilans ny sida',
'page callback' => 'sproilans_ny',
'type' => MENU_NORMAL_ITEM,
);
return $menu;
}
function sproilans_ny() {
return 'Kroppen';
}
?>
Den biten gör att du nu kan surfa över till http://example.com/?q=minsida (eller http://example.com/minsida med Clean URLs) och där se din (sproilans) nya sida.
För att länka till en extern sida kan du (med D5 iallafall, jag är osäker på D6) använda drupal_goto() som callback och ange adressen som callback-parameter. Något liknande detta:
<?php
function minmodul_menu() {
$menu = array();
$menu['extern'] = array(
'title' => 'En titel som aldrig syns',
'page callback' => 'drupal_goto',
'page arguments' => 'http://example2.com/',
'type' => MENU_NORMAL_ITEM,
);
return $menu;
}
?>
Därefter kan du surfa till http://example.com/q=extern och där bli redirectad (svengelskan haglar idag) till http://example2.com/.
Kolla även upp Coding Standards. Jag är själv medvetet dålig på att följa den, så min kod kan vara "smutsig".)
Tobias Sjösten
inte riktigt vad jag var ute efter...
tack för svar. Jag kanske uttryckte mig dåligt, vad jag försöker få till är att skapa en "customiserad" meny rad till i vänster menyn... precis som att gå in under admin delen och lägga till ett nytt item till navigerings menyn, men programmatiskt...
Om du använder hook_menu()
Om du använder hook_menu() och ger dina items typen MENU_NORMAL_ITEM så kommer en länk att läggas till i navigationsmenyn.
Med du kanske menar en helt ny, programmatiskt skapad meny? Isåfall bör du kolla in hook_block() (för att skapa menyn) och theme_links() (för att skapa länkarna i menyn). Det är snart midnatt och jag har en del kod kvar att spotta ur mig för en deadline imorgon (inte min planering, mind you!) så det blir tyvärr ingen exempelkod den här gången.
Tobias Sjösten
Menysystemet
Intressant att denna fråga kommer just idag, har precis varit på ett seminarium om det nya menysystemet i Drupal 6 på Drupalcon. Förutom api-dokumentationen som tobias nämner finns också ett gäng handboksidor om menysystemet som kanske kan vara till hjälp.
/ Hannes Lilljequist – SthlmConnection
Jag var på samma
Jag var på samma föreläsning (eller vad man nu ska kalla det) som Hannes och kontentan var att man inte ska ta koden från node.module i D6 eftersom den innehåller en bugg (chx var hemskt självransakande! :)). I övrigt ska API:et stämma, dock finns en hel del best practices att följa.
Spana in slidesen från deras presentation så snart de kommer live på drupalcon.org.
Jakob Persson
Webbredaktören - www.webbredaktoren.se
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog
Får inte till det...
Följer tobiassjostens exempel med får access denied när jag anropar sidan example2.com/?q=minsida ...
Är inloggad med admin kontot... får heller inte något entry i menyn till vänster, nån som har ngt förslag.
Märkligt. Du kan testa att
Märkligt. Du kan testa att ange åtkomstkontroll för ditt meny-objekt och se ifall det fungerar bättre så. Det ska defaulta till user_access(), vilket returnerar 1 men det skadar aldrig att testa. Lägg till detta i din array:
'access arguments' => array('access content'),.Tobias Sjösten
Fungerar nu
Tog bort den externa menyn och så funkade förslaget.
Om jag vill länka till en redan definerad sida typ skapa en snabb länk till admin/build/modules , hur gör jag det ?
Var hittar jag api dokumentation på drupal_ funktioner ?
Ledsen för banala frågor men är newbie än så länge....
Menysystemet består
Menysystemet består egentligen av två delar:
I D5 och tidigare har dessa varit integrerade men i D6 är de separata.
I D6 lagras alla sökvägar och motsvarande callbackfunktioner i en tabell i databasen (tidigare lagrades de som en serialiserad array som laddades för varje sidbegäran). Du kan överrida ett menyalternativ och koppla din egen callback genom att använda hook_menu_alter.
Alla drupal_-funktioner ska finnas dokumenterade på api.drupal.org.
Läs mer om menysystemet:
http://drupal.org/node/102338
Jakob Persson
Webbredaktören - www.webbredaktoren.se
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog