Schau mal in den Quellcode irgendeines Moduls das Pretty URLs unterstützt (z.B. News Modul).
Dort gibt es eine Funktion namens function SetParameters().
In dieser Funktion wird mit der Funktion $this->RegisterRoute(...) ein Regulärer Ausdruck festgelegt nach dem CMSms erkennt, dass es sich bei der aufgerufenen URL um einen Modulaufruf handelt und welche Teile dieses Ausfrufs welchen Variablen als Werte zugewiesen werden sollen.
Bsp: deineDomain/1/test
Der reguläre Ausdruck wäre also in Worten: eine Gruppe von Ziffern, gefolgt von einem Schrägstrich, gefolgt von dem Wort Test.
Aussehen würde er z.B. so: /(\d+)\/test$/
PHP nutzt auch einen anderen Syntax, den ich jetzt leider nicht so einfach erklären kann. Im Prinzip werden die Namen der Variablen mit Hilfe von ?P mit in in den Suchausdruck eingebaut und dem eigentlichen Suchmuster vorangestellt.
Wie gesagt, ein Blick in den Quellcode anderer Module dürfte etwas Klarheit verschaffen.
In Deinem Beispiel müsste die Funktion so aussehen:
Code: Select all
$this->RegisterRoute('/(?P<Name Parameter 1>Wert Parameter 1)\/(?P<Name Parameter 2>Wert Parameter 1)$/', array(optionale zusätzliche parameter));
genauer:
Code: Select all
$this->RegisterRoute('/(?P<Name Parameter 1>\d+)\/(?P<Name Parameter 2>test)$/', array('action'=>'foo'));
Somit findet CMSms als erstes eine Ziffer und weist sie Parameter 1 zu.
Als zweites das Wort 'test' und weist es Parameter 2 zu.
CMSms sammelt alle Parameter im Array $params.
Als zusätzlicher Parameter, der nicht in der URL enthalten ist, wird noch 'action' mit dem Wert 'foo' übergeben. Jetzt weiß das CMS, welche Aktion des Moduls ausgeführt werden soll.
In dieser Aktion - action.foo.php - kannst Du nun mit $params['Name Parameter 1'] bzw. $params['Name Parameter 2'] auf die Werte in der URL zugreifen.
Man könnte die Aktion auch in die URL einbauen:
Code: Select all
$this->RegisterRoute('/(?P<action>\w+)\/(?P<Name Parameter 1>\d+)\/(?P<Name Parameter 2>test)$/');
Im Prinzip sind fast alle Pretty URLs so aufgebaut:
modul name/wert1/wert2/.../und irgendwo auch noch die returnid.
Ohne Returnid weiß das CMS nicht auf welcher Seite es die Modulaktion anzeigen soll und zeigt es auf der Startseite an.
Ich hoffe das hilft Dir weiter.