Ta bort en "path" från en modul eller köra en redirect?

Events happening in the community are now at Drupal community events on www.drupal.org.
Urme's picture

Jag har en modul som vi kan säga använder en sökväg för att lista innehåll, sökvägen kan vi säga är "mypath" och "mypath/%user_uid_optional".
Grejen är att jag har gjort en egen vy istället för dessa två sökvägar, hur kan jag på bästa sätt "nolla" dessa sökvägar alternativt att användarna hamnar på min nya sökväg som jag gjort genom Views? Tänkte att Rules skulle fungera men hittade ingen lösning där, testade även URL Redirect modulen, men den fungerar inte om sökvägen existerar som det verkar.

Jag vill inte att användarna ska kunna gå in på "mypath". Något tips? Kan jag göra en menu_alter på något sätt och göra en redirect?

Comments

hook_menu_alter är till för

jonne_jvl's picture

hook_menu_alter är till för precis sådant.
Vill du inte ens ha den kvar kan du ju köra unset($menu['mypath'])

Vill du bara byta ut den kan du byta ut page callback och page arguments.

Passa lite när det är två moduler som tillhandahåller samma sökväg. Arrayen är keyad på url delen, så någon modul skriver över
den andra. Och med en unset så försvinner båda. I teorin kan man styra det med module weights.

Men det är bättre att köra menu_alter.

Har testat lite och

Urme's picture

Har testat lite och hook_menu_alter registreras iaf, men kan inte komma på vad jag ska skriva på page callback och page arguments.

Så här ser pathen ut i nodegallery modulen:

  $items['galleries'] = array(
    'title' => t('Image galleries'),
    'page callback' => 'node_gallery_list',
    'access arguments' => array(NODE_GALLERY_PERM_VIEW_GALLERY),
    'file' => 'node_gallery.pages.inc',
    'type' => MENU_NORMAL_ITEM,
  );

Den vill jag ska gå till min egna View path som är "gallery".
Så här:

function mymodule_menu_alter(&$items) {
  $items['galleries']['title'] = 'MENUALTERTEST';
}

Titeln ändras som den ska med denna ändring.
Måste jag göra en egen page callback function i modulen som kör en drupal_goto? Eller kan man lösa det direkt i hook_menu_alter funktionen?

Sorry var lite upptagen. Du

jonne_jvl's picture

Sorry var lite upptagen. Du kanske har löst det?

Kollade lite snabbt i views, och det verkar vara så att views implementerar sina sökvägar mha _alter.
Alltså, om views tillhandahåller en vy på urlen 'galleries' så kommer den alltid ersätta det som skulle ha visats där.
Inte testat, men det borde bli så.

Snabbt hackalternativ är ibland att göra en egen page callback, som bara returnerar en annan page.

exempel:

// visar sitens startsida eller inloggningssida på urlen 'galleries'

function mymodule_menu_alter(&$items) {
  $items['galleries']['title'] = 'MENUALTERTEST';
  $items['galleries']['page callback'] = '_mymodule_fakepage';
}
function _mymodule_fakepage(){
return menu_execute_active_handler('user');
}

Sweden

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: