Home / Forum / eZURL

eZURL

Um Zugang zu den Foren zu erhalten, müssen Sie angemeldet sein

Autor Nachricht

FB 85

Registriert seit: 11.05.2009

Beiträge: 43

Freitag, 30. Oktober 2009 16:40:39

Hallo,

ich bin gerade dabei mir eine Extension zu schreiben, und dabei bin ich auf folgendes Problem gestoßen. Ich möchte aus dem PathIdentificationString (Ordner1/inhalte/termine/event1) eine Url machen. Im Prinzip soll es dasselbe tun wie {$termine.url_alias|ezurl()}!

Geht das irgendwie???

Gruß
Florian

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Montag, 02. November 2009 07:52:00

Sollte eigendlich genauso gehen.

{'Ordner1/inhalte/termine/event1'|ezurl()}

oder mit beliebiger Variable mit Url-String
{$deineUrlString|ezurl()}


Mußt dabei nur aufpassen, dass das ezurl() bereits die Anführungsstriche ("[deine Url]" vor und hinter der Url setzt. Ab und zu benötigt man allerdings nur einfache Anführungsstriche ezurl('single') oder keine Anführungsstriche ezurl('no'). Vielleicht liegt da dein Fehler.

Dipl. Ing. (FH) M. Sc. Thomas Köhn

http://www.jac-systeme.de - Individuelle WEB-Lösungen
--
http://www.CJW-NETWORK.com/de - Developers united in eZ Publish
http://projects.ez.no/cjw_newsletter - eZ Publish Newsletter Lösung

FB 85

Registriert seit: 11.05.2009

Beiträge: 43

Montag, 02. November 2009 08:46:54

Hätte vielleicht erwähnen sollen, das ich den teil in ner PHP Datei benötige! Gibts da auch ne Lösung für???

Gruß
Florian

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Montag, 02. November 2009 09:12:29

Dann schau dir den eZURLOperator einfach mal genauer an. Der macht ja im Template genau das was du brauchst. Den PHP-Code zum Operator findest du unter "[ezroot]\kernel\common\ezurloperator.php". Das sollte dir weiter helfen.

Dipl. Ing. (FH) M. Sc. Thomas Köhn

http://www.jac-systeme.de - Individuelle WEB-Lösungen
--
http://www.CJW-NETWORK.com/de - Developers united in eZ Publish
http://projects.ez.no/cjw_newsletter - eZ Publish Newsletter Lösung

Felix Woldt

Bild Felix Woldt

Registriert seit: 31.01.2006

Beiträge: 353

Montag, 02. November 2009 10:01:49

Hallo,

der ezurl tpl operator php code steht hier

kernel/common/ezurloperator.php

Da musst du mal schauen.
Du kannst Deine Lösung ja dann hier posten.

Gruß Felix

http://www.jac-systeme.de - Individuelle WEB-Lösungen
--
http://www.CJW-Network.com/de - Developers united in eZ Publish
http://projects.ez.no/cjw_newsletter - eZ Publish Newsletter Lösung

FB 85

Registriert seit: 11.05.2009

Beiträge: 43

Montag, 02. November 2009 13:56:25

hmm, ich habe nun den ganzen Vormittag geguckt, und probiert! Bekomme aber einfach kein zufriedenstellendes Ergebnis! Wäre Super, wenn mir da noch jemand bei helfen könnte! ich muss glaube ich folgendes nutzen!

include_once( 'kernel/classes/datatypes/ezurl/ezurl.php' );
$temp_url = eZURI::transformURI( "Ordner1/inhalte/termine/event1", false, "relative" ) ;
echo $temp_url;


nur kommt dabei folgende Fehlermeldung!
PHP Fatal error: Cannot pass parameter 1 by reference in .....

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Montag, 02. November 2009 15:13:26

Die Funktion transformURI erwartet als ersten Wert eine Variable auf die es eine Reference machen kann. Mach aus deinen konstanten String einfach mal eine Variable. Könnte danach eventuell schon gehen.

Dipl. Ing. (FH) M. Sc. Thomas Köhn

http://www.jac-systeme.de - Individuelle WEB-Lösungen
--
http://www.CJW-NETWORK.com/de - Developers united in eZ Publish
http://projects.ez.no/cjw_newsletter - eZ Publish Newsletter Lösung

FB 85

Registriert seit: 11.05.2009

Beiträge: 43

Montag, 02. November 2009 15:34:09

Der Fehler ist nun weg, aber nun bekomme ich einfach nur eine 1 als Ergebniss!

Hat jemand ne Ahnung warum???

FB 85

Registriert seit: 11.05.2009

Beiträge: 43

Montag, 09. November 2009 09:11:19

Hallo,

ich komme bei dem Problem einfach nicht weiter! Hat keiner von euch ne Idee, wie man das machen könnte???

Gruß
Florian

Tino Maass

Registriert seit: 24.11.2008

Beiträge: 12

Mittwoch, 11. November 2009 12:33:56

Die Funktion "transformURI" liefert auch nur true oder false zurück.

    static function transformURI( &$href, $ignoreIndexDir = false, $serverURL = 'relative' )
    {
        if ( preg_match( "#^[a-zA-Z0-9]+:#", $href ) || substr( $href, 0, 2 ) == '//' )
            return false;

        if ( strlen( $href ) == 0 )
            $href = '/';
        else if ( $href[0] == '#' )
        {
            $href = htmlspecialchars( $href );
            return true;
        }
        else if ( $href[0] != '/' )
        {
            $href = '/' . $href;
        }

        //include_once( 'lib/ezutils/classes/ezsys.php' );
        $sys = eZSys::instance();
        $dir = !$ignoreIndexDir ? $sys->indexDir() : $sys->wwwDir();
        $serverURL = $serverURL === 'full' ? $sys->serverURL() : '' ;
        $href = $serverURL . $dir . $href;
        if ( !$ignoreIndexDir )
        {
            $href = preg_replace( "#^(//)#", "/", $href );
            $href = preg_replace( "#(^.*)(/+)$#", "\$1", $href );
        }
        $href = htmlspecialchars( $href );

        if ( $href == "" )
            $href = "/";

        return true;
    }
   


Meine bescheidene und wahrscheinlich viel zu komplizierte Lösung wäre, da in der Funktion ja alles nötige behandelt wird was du brauchst, sie einfach flink kopieren, bzw. Code-Teile daraus zu verwenden.

Oder darauf aufbauend eine eigene Funktion schreiben die dir die URI umwandelt.

Theoretisch wenn ich mich nicht irre, müsste statt return true / false, ein return $href reichen... so wie ich die Funktion verstanden habe.

====================================================
JAC-Systeme GmbH
http://www.jac-systeme.de

CJW Network
http://www.cjw-network.com

Um Zugang zu den Foren zu erhalten, müssen Sie angemeldet sein