Platzhalter in Navigations link

am 17.08.2010 - 11:23 Uhr in
Hallo zusammen,
seit 2 Tagen nun bastel ich Ohne jeglichen erfolg... ich versuche eigentlich 'nur' einen Link zu erzeugen der auf .base_path./user/%user/subuser zeigt.
aber scheinbar ist es eine Sache der Unmöglichkeit...
Ich fürchte das die Lösung ebenso offensichtlich wie simpel ist, aber ich komm nicht weiter... Bitte um hilfe
- Anmelden oder Registrieren um Kommentare zu schreiben
Link
am 17.08.2010 - 11:54 Uhr
Hallo.
Wie genau versuchst Du, diesen Link zu erzeugen?
Über die Adminseiten für Menüs? Über [api:l]? Oder über [api:hook_menu]?
Stefan
hab es über das admin panel
am 17.08.2010 - 13:50 Uhr
hab es über das admin panel versucht, jedoch bin ich nun dabei mich in die hooks einzulesen und werd es wahrscheinlich darüber machen, sofern ich den einstiegspunkt finde wo das menü hin soll, bzw wie ich es unter den Punkt 'My Account' komme, denn daran scheitert es im moment
EDIT
Hab nun den Menüpunkt gefunden, muss nun nur noch schauen wie ich ein Modul geschrieben bekomme, das ein child von My Account erzeugt... aber ich bin zuversichtlich.
hatte nur gehofft, das es eine einfache lösung gibt als ein modul zu schrieben, das sich im user menu einklinkt und ein paar menüpunkte hinzufügt
soweit so gut, menüpunkte
am 17.08.2010 - 14:24 Uhr
soweit so gut, menüpunkte werden nun soweit angezeigt, allerdings gibt es ein problem und zwar :
Fatal error: require_once() [function.require]: Failed opening required 'sites/all/modules/Navi_addon/user.pages.inc' (include_path='.;C:\xampp\php\pear\;C:\xampp\htdocs\projects\ml\libs\') in C:\xampp\htdocs\drupal\includes\menu.inc on line 346
ich glaube mkir fehlt ein callback....
oder der "file path" dazu ...
am 17.08.2010 - 14:32 Uhr
oder der "file path" dazu ...
kannst du es evtl etwas
am 17.08.2010 - 14:58 Uhr
kannst du es evtl etwas genauer anführen?
hab den Filepath nun mit angegeben, allerdings bockt er rum und meint, die im user.page.inc aufgerufene funktion könne nicht 'redeclared' werden...
Hi, poste mal den Quelltext
am 17.08.2010 - 15:02 Uhr
Hi, poste mal den Quelltext der beiden Dateien, aus der "deinmodule.module" und der "deinmodule.page.inc".
Dann können wir Dir das entsprechend posten.
eine meinmodul.page.inc hab
am 17.08.2010 - 15:04 Uhr
eine meinmodul.page.inc hab ich nicht...
function navi_addon_menu(){
$items['user/%user_uid_optional/edit'] = array(
'title' => 'edit Account',
'access callback' => TRUE,
'weight' => 5,
'access callback' => TRUE,
'file' => '../../../../modules/user/user.pages.inc',
);
$items['user/%user_uid_optional/profile/profile']=array(
'title' => 'edit Profile',
'access callback' => TRUE,
'weight' => 6,
);
$items['user/%user_uid_optional/subuser/create'] = array(
'title' => 'create Subuser',
'access callback' => TRUE,
'weight' => 7,
);
return $items;
}
<?php function
am 17.08.2010 - 15:14 Uhr
<?php
function navi_addon_menu(){
$items = array();
$items['user/%user/profile/profile'] = array(
'title' => 'Edit profile',
'page callback' => 'navi_addon_profile_profile',
'page arguments' => array(1),
'access callback' => TRUE,
'weight' => 6,
);
$items['user/%user/subuser/create'] = array(
'title' => 'create Subuser',
'page callback' => 'navi_addon_subuser_create',
'page arguments' => array(1),
'access callback' => TRUE,
'weight' => 7,
);
return $items;
}
?>
Die beiden Callbacks "navi_addon_profile_profile" und "navi_addon_subuser_create" musst Du dann entsprechend noch mit Inhalt füllen:
<?php
function navi_addon_subuser_create($user) {
return '';
}
function navi_addon_subuser_create($user) {
return '';
}
?>
ich werds gleich mal testen,
am 17.08.2010 - 15:16 Uhr
ich werds gleich mal testen, vielen dank
und bei dem ersten menü punkt? denn eigentlich soll er ja nur auf die vorhandene seite linken
Der erste Menüpunkt ist doch
am 17.08.2010 - 15:22 Uhr
Der erste Menüpunkt ist doch aus dem user.module.
Der ist dort doch schon angelegt, deshalb benötigst Du ihn in Deinem Modul ja nicht noch einmal.
Sollen die Menüpunkte Tabs sein oder nur reine Callbacks, wenn es Tabs sein sollen müsstest Du den einzelnen Items noch
'type' => MENU_LOCAL_TASK,
hinzufügen.
mhh.. er wird aber nicht
am 17.08.2010 - 15:25 Uhr
Ne, die sollen lediglich in der Navigation auftauchen
mhh.. er wird aber nicht angezeigt, hab ihn gerade gesehen, sofern es der richtige ist. wird aber leider nicht angezeigt.
und bei den anderen beiden, die menüpunkte sind nun verschwunden. hab den cache geleert und die seite neu geladen, aber mit jedem laden ist es ein menüpunkt weniger geworden
und du sagtest die Callbacks mit inhalt füllen, aber das sind Module, die bereits implementiert sind, nur eben keinen menüpunkt an der stelle haben...
steh etwas auf dem schlauch ;) ist mein ersten modul
Aus welchem Modul stammen
am 17.08.2010 - 15:39 Uhr
Aus welchem Modul stammen denn die Seiten, dann schreib ich Dir das nachher einmal richtig, ich bin davon ausgegangen dass Du eigene Inhalte hinzufügen wolltest und nicht auf bestehende Inhalte einen Menüpunkt anlegen möchtest.
missverständnisse kann man
am 17.08.2010 - 15:44 Uhr
missverständnisse kann man zum glück immer lösen :)
das eine gehört zum subuser.module
das andere ist eigenltich vom content_profile
und der ersten der aber nicht angezeigt wird, ist vom core.module Profil
allerdings, komm ich im moment nirgendswo hin... das verwirrt mich, egal ob mit link oder ohne, oder werde bei implementation des moduls die eigentlichen links überschrieben?
Teste mal Folgendes: <?php/**
am 17.08.2010 - 22:26 Uhr
Teste mal Folgendes:
<?php
/**
* Implementation of hook_menu().
*/
function navi_addon_menu() {
global $user;
$items = array();
$items['subuser-create'] = array(
'title' => variable_get('subuser_create', 'Create subuser'),
'page callback' => 'drupal_get_form',
'page arguments' => array('subuser_create_form', $user),
'access arguments' => array('create subuser'),
'file path' => drupal_get_path('module', 'subuser'),
'file' => 'subuser.pages.inc',
);
$items['user-profile'] = array(
'title callback' => 'check_plain',
'title' => drupal_ucfirst('Profile'),
'page callback' => 'content_profile_page_edit',
'page arguments' => array('profile', $user),
'access callback' => 'content_profile_page_access',
'access arguments' => array('profile', $user),
'weight' => content_profile_get_settings('profile', 'weight'),
'file' => 'node.pages.inc',
'file path' => drupal_get_path('module', 'node'),
);
return $items;
}
?>
Wundervoll :) ich danke dir,
am 18.08.2010 - 08:11 Uhr
Wundervoll :) ich danke dir, jedoch stehe ich nun vor der geringen Schwierigkeit, das ich diese Beiden menüpunkte al Unterpunkte zu 'My Account' brauche, werde da erstmal ein wenig dran basteln und wenn es nicht klappt völlig aufgelöst nochmal posten ;)
Und nun fehlt mir noch die option, das ich auch die Benutzer einstellungen als einen solchen Listenpunkt darstellen kann, aber du sagtest ja, der Menüpunkt sei im user.module, würd die dann überschrieben, denk ich....
Weil ich keinerlei Intention habe, im Core mosul zu pfuschen
EDIT: Menüpunkte sind unter dem Punkt, unter den sie gehören, jedoch bleibt nun noch der Account Bearbeiten link übrig, aber ds werde ich auch noch in den griff bekommen ;)
Ich danke dir vielmals bis hier hin und danke für die mühe die du dir gemacht hast.
ich tu mich scheinbar gerade etwas schwer mit dem hook_menu_alter, denn die dokumentationen sind recht dünn... somit bin ich mir nicht sicher, wie ich nun lediglich den link umsetze...
Du kannst alle Menüpunkte
am 18.08.2010 - 08:00 Uhr
Du kannst alle Menüpunkte über den hook_menu_alter anpassen.
Problem gelöst mittels
am 18.08.2010 - 08:35 Uhr
Problem gelöst mittels drupal_goto ;)
alles läuft wie es laufen soll, und Danke Sense für die Tatkräftige unterstützung
hier nun einmal der komplette code der 3 Menüpunkte an den Punkt 'My Account' fügt:
<?php
<?php
// $Id$
/**
* Implementation of hook_menu().
*/
function navi_addon_menu() {
global $user;
$items = array();
$items['user/%user_uid_optional/subuser-create'] = array(
'title' => variable_get('subuser_create', 'create subuser'),
'page callback' => 'drupal_get_form',
'page arguments' => array('subuser_create_form', $user),
'access arguments' => array('create subuser'),
'file path' => drupal_get_path('module', 'subuser'),
'file' => 'subuser.pages.inc',
);
$items['user/%user_uid_optional/user-profile'] = array(
'title callback' => 'check_plain',
'title' => drupal_ucfirst('Profile'),
'page callback' => 'content_profile_page_edit',
'page arguments' => array('profile', $user),
'access callback' => 'content_profile_page_access',
'access arguments' => array('profile', $user),
'weight' => content_profile_get_settings('profile', 'weight'),
'file' => 'node.pages.inc',
'file path' => drupal_get_path('module', 'node'),
);
$items['user/%user_uid_optional/edit_profile'] = array(
'title' => 'Edit profile',
'page callback' => 'useredit_goto',
'access callback' => 'user_access',
);
return $items;
}
/**
* Funktion leitet leitet das page callback auf die gewünschte Adresse um.
*/
function useredit_goto() {
global $user;
drupal_goto('user/' . $user->uid . '/edit');
}
?>
Noch eine kleine Anmerkung,
am 18.08.2010 - 08:44 Uhr
Noch eine kleine Anmerkung, nenne die Funktionen immer so wie das modul heisst, also:
useredit_goto
innavi_addon_useredit_goto
, vergiss nicht, dies auch im page callback anzupassen und danach den Cache zu leeren.hab ich geändert, allerdings
am 18.08.2010 - 10:45 Uhr
hab ich geändert, allerdings folgt nundie nächste hürde... ich hab 2 rollen mit unterschiedlichen profilen...
er fragt mit dem access callback lediglich die berechtigung ab und bekommt ein TRUE oder FALSE richtig?
Hab gerade eine idee, werd das mal prüfen und das Ergebnis hier posten
ohne erfolg... er linked immer auf das benutzer profil... ich bastel weiter
So, theoretisch sind die Menü
am 18.08.2010 - 15:34 Uhr
So, theoretisch sind die Menü punkte nun da, jedoch gibt es ein signifikantes Rechte Problem, es werden, bei entsprechenden rollen nicht die zugehörigen links angezeigt...
Der Normale Benutzer bekommt keinen Link, wohingegen der Benutzer der subuser erstellen darf, zumindeast den Subuser creat link angezeigt bekommt.
lediglich der Admin (ich ;)) bekommt ALLE links die in über das mein Modul implementiert habe angezeigt...
<?php
// $Id$
/**
* Implementation of hook_menu().
*/
function navi_addon_menu() {
global $user;
$items = array();
$items['user/%user_uid_optional/subuser-create'] = array(
'title' => variable_get('subuser_create', 'create subuser'),
'page callback' => 'drupal_get_form',
'page arguments' => array('subuser_create_form', $user),
'access arguments' => array('create subuser'),
'file path' => drupal_get_path('module', 'subuser'),
'file' => 'subuser.pages.inc',
);
$items['user/%user_uid_optional/user-profile'] = array(
'title callback' => 'check_plain',
'title' => drupal_ucfirst('Profile'),
'page callback' => 'content_profile_page_edit',
'page arguments' => array('profile', $user),
'access callback' => 'content_profile_page_access',
'access arguments' => array('profile', $user),
'weight' => content_profile_get_settings('profile', 'weight'),
'file' => 'node.pages.inc',
'file path' => drupal_get_path('module', 'node'),
);
$items['user/%user_uid_optional/unternehmer-profil'] = array(
'title callback' => 'check_plain',
'title' => drupal_ucfirst('Profile'),
'page callback' => 'navi_addon_rollen_check',
'access callback' => 'content_profile_page_access',
);
$items['user/%user_uid_optional/edit_profile'] = array(
'title' => 'Edit profile',
'page callback' => 'navi_addon_useredit_goto',
'access callback' => 'user_access',
);
return $items;
}
/**
* Funktion leitet leitet das page callback auf die gewünschte Adresse um.
*/
function navi_addon_useredit_goto() {
global $user;
drupal_goto('user/' . $user->uid . '/edit');
}
function navi_addon_rollen_check(){
global $user;
drupal_goto('user/'.$user->uid.'/edit/unternehmer_profil');
}
?>
das ist der gegenwärtige stand
Leider, ich weiß nicht
am 20.08.2010 - 09:19 Uhr
Leider, ich weiß nicht wawrum, gibt es einige Berechtigungsprobleme, denn die Benutzer die Zugriff auf die verschiedenen Punkte des Neuen Menüs haben, bekommen dieses nicht angezeigt. selbst wenn ich das 'access callbacl' mit TRUE versehe, wodurch es standartmäßig JEDEM angezeigt wird, erfolgt keine darstellung bei benutzern, lediglich der Sysadmin hat zugriff darauf