DragonPrime - LoGD Resource Community
Welcome Guest
  • Good evening, Guest.
    Please log in, or register.
  • November 20, 2018, 11:34:31 PM
Home Forums News Downloads Login Register Advanced Search
* * *
DragonPrime Menu
Login
 
 
Resource Pages
Search

Pages: [1]   Go Down
  Print  
Author Topic: modulehook - module_addhook  (Read 3045 times)
0 Members and 1 Guest are viewing this topic.
Apollon
Captain of the Guard
***
Offline Offline

Posts: 144


This life is one of the hardest!


View Profile
« on: July 19, 2009, 09:20:46 AM »

Ein kleines Verstndnisproblem: Ich habe ein Modul geschrieben, ein Gebude, und habe ein Navigation vor dem Gebude und im Gebude, bei beiden habe ich ein Modulhook hinzugefgt, ist das so mglich?

Vor dem Gebude:
Code:
...
addnav("In das XX","runmodule.php?module=mmm&op=xx");
modulehook("mm");
addnav("Wege");
addnav("Zum YY","runmodule.php?module=mmm&op=ww");
....

Im Gebude:
Code:
...
addnav("Zum BBB","runmodule.php?module=mmm&op=bbb");
modulehook("mm1");
addnav("Zurck zum Hof","runmodule.php?module=mmm&op=hof");
...

Bei einem Blick in die DragonPedia habe ich es so verstanden, da im neuen Modul der Aufruf dann folgendermaen erfolgen mu:

Code:
...
function bla_install(){
module_addhook("mm,"mm1");
module_addhook("village");
...


function bla_dohook($hookname, $args){
global $session;
switch($hookname){
case "mm","mm1":
...

Ist das so korrekt, oder kann ein Modul keine 2 Modulhooks enthalten? Oder habe ich nur den falschen Aufruf?
Logged

I am the country, my eyes am the sky, my limbs the trees, I am the rock, the depth of water. I am not here, in order to control mother nature or exploit her. I am even nature.
(Hopi)
seekey
Moderator
Codemeister
*****
Offline Offline

Posts: 475


Demon to some but Angel to others


View Profile WWW
« Reply #1 on: July 19, 2009, 09:30:02 AM »

Ein Modul kann so viele Hook haben, wie du willst. Aber du musst jeden Hook einzeln ansprechen.

Das hier:
Code:
module_addhook("mm,"mm1");

wird so nicht funktionieren, da du versuchst beide Hooks anzusprechen und den ersten nicht mal geschlossen hast.

Code:
module_addhook("mm");
module_addhook("mm1");

Sollte dagegen funzen.

Es gbe zwar noch die Mglichkeit denselben Hook zu verwenden und im Modul Parameter zu definieren, die du mit dem Hook dann bergibst, aber ich denke fr deinen Zweck ist die obige Lsung schon in Ordnung.

P.S.: Hab grad noch gesehen, dass dein Aufruf auch nicht so ganz korrekt ist. Aus:

Code:
case "mm","mm1":

solltest du dann noch:

Code:
case "mm":
case "mm1":

blabla

break;

machen. Ich bin nicht sicher ob deine Lsung funktioniert, aber ich glaube eher nicht.
« Last Edit: July 19, 2009, 09:32:45 AM by seekey » Logged
Apollon
Captain of the Guard
***
Offline Offline

Posts: 144


This life is one of the hardest!


View Profile
« Reply #2 on: July 19, 2009, 09:38:19 AM »

Vielen Dank Seekey, ich war mir bei dem Ganzen nicht so sicher und bin weiterhin am lernen, so wie wie jetzt grade. Die von Dir angedachte Lsung wird auf jeden Fall reichen fr meine Zwecke, vielen Dank  Smiley
Logged

I am the country, my eyes am the sky, my limbs the trees, I am the rock, the depth of water. I am not here, in order to control mother nature or exploit her. I am even nature.
(Hopi)
Apollon
Captain of the Guard
***
Offline Offline

Posts: 144


This life is one of the hardest!


View Profile
« Reply #3 on: July 19, 2009, 09:42:30 AM »

Mir fllt grade auf, bentige ich dann icht auch 2x break?

Code:
case "mm":
             case "mm1":

blabla
              break;
break;

Logged

I am the country, my eyes am the sky, my limbs the trees, I am the rock, the depth of water. I am not here, in order to control mother nature or exploit her. I am even nature.
(Hopi)
seekey
Moderator
Codemeister
*****
Offline Offline

Posts: 475


Demon to some but Angel to others


View Profile WWW
« Reply #4 on: July 19, 2009, 09:45:35 AM »

Wenn du da zwei unterschiedliche Dinge ausfhren willst, brauchst du in jedem Fall zwei breaks, ansonsten machen beide Cases dasselbe. Es sei denn, du differenzierst da noch mit ne if Abfrage, aber das wre auch irgendwie Unsinn.

Das msste dann aber so aussehen:

Code:
case "mm":
blabla
break;

case "mm1":
anderes blabla
break;


Und gern geschehen Wink
Logged
Hora
Member
Militia
**
Offline Offline

Posts: 9


I'm a llama!


View Profile
« Reply #5 on: July 23, 2009, 02:22:35 AM »

Wenn ich mich recht erinnere kannst Du dir aber auch die 2 Hooks sparen und einfach uebers template gehen.

Code:
function mmm_dohook($hookname,$args){
global $SCRIPT_NAME;

switch($hookname){
case 'template-header':
if ($SCRIPT_NAME=="bla.php" && $op=='aaa') {addnav("In das XX","runmodule.php?module=mmm&op=xx");}
if ($SCRIPT_NAME=="bla.php" && $op=='ccc') {addnav("In das BBB","runmodule.php?module=mmm&op=bbb");}
                break;

}
return $args;
}

Einfach mal ausprobieren. Weiss nicht obs geht.
Logged
backflip
Codemeister
****
Offline Offline

Posts: 278


om nom nom


View Profile WWW
« Reply #6 on: July 23, 2009, 10:04:11 AM »

Die letzte Lsung funktioniert leider nicht, weil $op undefiniert ist. Man kann auch ber den hook "header-runmodule" gehen, oder, viel effizienter, ber "footer-$SKRIPTNAME", wenn das auch reicht.
« Last Edit: July 23, 2009, 10:10:38 AM by backflip » Logged

Bruce Schneier's functions don't have parameters. They have arguments, and they always win them.
Frodolin LoGD
Hora
Member
Militia
**
Offline Offline

Posts: 9


I'm a llama!


View Profile
« Reply #7 on: July 23, 2009, 11:11:01 AM »

Man sollte davon ausgehen das jeder schon ein

require_once("lib/http.php");
$op = httpget('op');

in irgendeinem Source gesehen hat.

Kenne den Code von 111 aber auch nicht so genau und die ganzen Aenderungen. Ich beschaeftige mich mal wieder mit 120 wenns mal rauskommt. Ansonsten nach kurzer Durchsicht muss ich recht geben

die Hooks

header-filename ohne .php
oder
footer-filename ohne .php

sind da vielleicht besser fuer geeignet. Spart auf jeden Fall ein bisschen an Code.

« Last Edit: July 23, 2009, 11:19:57 AM by Hora » Logged
Pages: [1]   Go Up
  Print  
 
Jump to:  


*
DragonPrime Notices
Please take the time to read the FAQ and browse the DragonPedia

Support Us
No funds raised yet this year
Your help is greatly appreciated!
Recent Topics
DragonPrime LoGD
Who's Online
45 Guests, 0 Users
Home Forums News Downloads Login Register Advanced Search