Blog Tags
Blog Archiv
- April, 2010 (1)
- Dezember, 2009 (2)
- November, 2009 (4)
Modulentwicklung, Tabs unter dem Edit-Tab einer Node
Drupal 6
Wie bekommt man unter den Tab "Bearbeiten" einer Node weitere Tabs? Also Unter- oder Children-Tabs wenn man sie so nennen will.
Wer die Frage so stellt ist aber erst bei der Hälfte des Themas angelangt.
Denn wenn man Children-Tabs erfolgreich erzeugt muss man sich auch die Frage stellen wie man diese Tabs wieder wegbekommt.
Beispiel-Screenshot:
Es geht also um die kontrollierbare Anzeige der Children-Tabs. An dieser Stelle liegt der Hase im Pfeffer.
Beispiel
Der Pfad zum Bearbeiten einer Node ist: node/x/edit
Die aktuelle Node ID ist x.
Im hook_menu() des Modules werden zu diesem Pfad 2 Menüs als Tab erzeugt.
/**
* Implementation of hook_menu().
*/
function gmap_node_menu() {
$items = array();
...
$items['node/%node_category/edit/map'] = array(
'title' => 'Node',
'access callback' => 'node_access',
'access arguments' => array('update', 1),
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => 0,
'tab_parent' => 'node/%/edit',
);
$items['node/%node_category/edit/map/edit'] = array(
'title' => 'Map',
'page callback' => 'drupal_get_form',
'page arguments' => array('gmap_node_map', 1),
'access callback' => 'node_access',
'access arguments' => array('update', 1),
'type' => MENU_LOCAL_TASK,
'weight' => 1,
'load arguments' => array('%map'),
'tab_parent' => 'node/%/edit',
);
return $items;
}
Hierbei erfolgt bereits die Vorbereitung für die Möglichkeit der Einflussnahme auf die beiden Menüinträge.
Dies sind zum Einen die Wildcard
%node_category
im Pfad der Menüs und zum Anderen ist es
'load arguments' => array('%map').
Damit ist man in der Lage in einer Funktion Bedingungen zu definieren um die Anzeige der beiden Menü-Tabs zu kontrollieren.
Wildcard loader: %wildcard_load()
Hier eine Beispiel-Funktion die mit dem Wildcard-Argument und dem map-Argument vom hook_menu() zusammenarbeitet.
/**
* Wildcard loader function.
*
* @return
* TRUE or FALSE
*/
function node_category_load(&$map) {
$node = node_load($map);
$types = gmap_node_check_set_nodetypes();
$valid = TRUE;
return $valid ? $types['type'][$node->type] : FALSE;
}
- Gibt die Wildcard loader Funktion TRUE zurück werden die Menü-Tabs angezeigt.
- Gibt die Wildcard loader Funktion FALSE zurück werden die Menü-Tabs nicht angezeigt.
Das ist eine der möglichen Vorgehensweisen.
Problem an dieser Stelle ist unter Umständen, das in der Callback-Funktion die mit
'page arguments' => array('gmap_node_map', 1),
aufgerufen wird und in der das Formular aufgebaut wird NICHT das Nodeobjekt zur Verfügung steht. Um das Nodeobjekt in der Callback-Funtion zur Verfügung zu haben kann man etwas anders vorgehen.
%wildcard_to_arg()
Als Erstes wird auf
'load arguments' => array('%map'),
verzichtet und in diesem Zusammenhang als Zweites eine Wildcard loader Funktion verwendet die exakt der Funktion node_load() entspricht.
Man verwendet dabei den Funktionsnamen node_category_load(). In dieser Funktion wird der Code der Funktion node_load() verwendet.
Da diese Wildcard loader Funktion nun nicht mehr TRUE oder FALSE zurückgibt hat man an dieser Stelle auch keine Kontrolle mehr über die Children-Tabs.
Um nun diese Kontrolle zu erlangen wird eine weitere Funktion
node_category_to_arg($arg)
verwendet. In dieser Funktion kann man auf irgendwelche Bedingungen prüfen. Werden die Bedingungen erfüllt dann wird der Funktions-Parameter $arg zurückgegeben. Wird die Bedingung nicht erfüllt dann wird FALSE zurückgegeben.
Beispiel einer solchen Funktion:
function node_category_to_arg($arg) {
$node = node_load($arg);
$types = gmap_node_check_set_nodetypes();
if ($types['type'][$node->type] == 1) {
return $arg;
}
else {
return FALSE;
}
}
- Gibt die Wildcard _to_arg Funktion $arg zurück werden die Menü-Tabs angezeigt.
- Gibt die Wildcard _to_arg Funktion FALSE zurück werden die Menü-Tabs nicht angezeigt.
Damit hat man wieder die Kontrolle über die Children-Tabs.
Mit dieser Vorgehensweise macht auch die "1" in
'page arguments' => array('gmap_node_map', 1),
Sinn. Denn diese "1" repräsentiert in der Callback-Funktion
gmap_node_map($form_state, &$node)
als 2. Funktionsparameter das Nodobject.
Links
Dynamic argument replacement (wildcard)
Kommentare
I cannot tell you official
I cannot tell you official ugg boots how strong my love for you was back then, abercrombie london
abercrombie
abercrombie and fitch
abercrombie uk
???? ??
tiffany uk
abercrombie
Abercrombie outlet
Abercrombie clothing
ed hardy uk
love kills slowly
abercrombie outlet
abercrombie clothing
abercrombie and fitch uk
abercrombie fitch uk
Abercrombie & fitch uk
???? ??
???? ??
abercrombie uk
abercrombie and fitch uk
Abercrombie & Fitch UK
abercrombie fitch uk
when I returned to you on leave in the September, feeling Australia ugg boots battered, bruised and fragile.
Natural slimming center
Natural slimming center offer 100% original slimming pills.slimming coffee,slimming tea,Such asgreen coffee 800.
slimming cream,slimming underwear,,
slimming diet,slim tea,herbal slimming tea,
sex underwear, to world wide with very competitive price and best quatity.Such as
lishou slimming, wu long slimming tea,lida daidaihua,super slim pomegranate weight loss,superslim.
Shop popular stores to find
Shop popular stores to find juicy couture women's fashions on sale - all in one place. Find it all here: JC handbags, shoes, tracksuits, clothing, and more!mac cosmetics
mac makeup
christian louboutin shoes
christian louboutin
links of londonWhat a perfect thing, it attracted all the attention, the miraculous birth of boundless charm. It is worthy of appreciation and ownership.
akljewajfwioefu
hollister uk
hollister
hollister clothing
hollister clothes
hollister london
hollister sale
hollister outlet
hollister online
Gucci Wallets Gucci
Gucci Wallets
Gucci Belts
Gucci Jewelry
Gucci Hats
Gucci Bikini
gucci clothing
gucci shoes
gucci sneakers
gucci handbags
gucci sunglasses