Waldi
I'm new here

Filesystem Deployment unabhängig von URL

Jump to solution

Hallo,

In unserem Projekt benötigen wir auf den Seiten URLs die so aussieht: index.php?page=%page-id%

Das Problem ist das die Struktur auf dem Filesystem aber so aussehen soll: /pages/%lang%/%page-id%.html

Gibt es die Möglichkeit die zwei Prozesse voneinander zu trennen?

Viele Grüße!

Waldi

1 Solution

Accepted Solutions

Hallo Tim,

Das ganze hat leider nicht ganz funktioniert. Erst nach den setzen von UseRegistry auf no wurden meine Funktionen die ich implementiert hab aufgerufen.

module.xml:

..

        <public>

            <name>EngsUrlCreator</name>

            <class>de.espirit.firstspirit.generate.UrlCreatorSpecification</class>

            <configuration>

                <LegacyClass>de.***.***.EngsUrlCreator</LegacyClass>

                <UseRegistry>no</UseRegistry>

            </configuration>

        </public>

..

Ich habe die Klasse UrlCreator implementiert:

     public class MyUrlCreator implements UrlCreator

und benutze folgende Funktionen:

  • public String getFilename(ContentProducer contentProducer, TemplateSet templateSet, Language language, PageParams pageParams)
  • public String getFilename(Media media, Language language, Resolution resolution)
  • public String getUrl(ContentProducer contentProducer, Language language, TemplateSet templateSet, PageParams pageParams, int i)
  • public String getUrl(Media media, Language language, Resolution resolution, int i)

Viele Grüße!

Waldi

View solution in original post

0 Kudos
7 Replies
Peter_Jodeleit
Crownpeak employee

Ja, prinzipiell ist das möglich. Mit welcher FirstSpirit-Version soll das umgesetzt werden?

Peter

Hallo,

Die Version ist 5.1.106.61855

0 Kudos

Du musst ein Modul implementieren, Einstiegspunkt in die API: http://www.e-spirit.com/odfs51/dev/de/espirit/firstspirit/generate/UrlCreator.html

Peter

Danke!

Habe jetzt eine Classe erstellt die von DefaultUrlCreator erbt und eine UrlFactory.

In der module.xml hab ich nun:

<!DOCTYPE module SYSTEM "lib/module.dtd">

<module>

    <name>UrlCreator</name>

    <version>@VERSION@</version>

    <vendor>...</vendor>

    <components>

        <public>

            <name>UrlCreator</name>

            <class>de.espirit.firstspirit.ps.UrlCreator</class>

            <configuration>

                <UrlFactory>de.espirit.firstspirit.ps.UrlFactory</UrlFactory>

                <useWelcomeFileNames>no</useWelcomeFileNames>

                <removeDeleted>yes</removeDeleted>

            </configuration>

        </public>

    </components>

    <resources>

        <resource>lib/@FILENAME@.jar</resource>

    </resources>

</module>

Leider kann ich die Klasse jetzt aber nicht in der Liste auswählen:

Bildschirmfoto 2014-09-11 um 13.50.27.png

Woran liegt das? Muss ich das ganze jetzt an einer anderen Stelle einstellen?

Danke!

0 Kudos

Bitte nicht als "de.espirit.firstspirit" als Paket benutzen. Das "eine Classe erstellt die von DefaultUrlCreator erbt" ist auch keine gute Idee, bitte nur als delegate benutzen (DefaultUrlCreator ist _keine_ API).

Der Deskriptor muss so aussehen:

...

        <public>

            <name>your name</name>

            <class>de.espirit.firstspirit.generate.UrlCreatorSpecificationImpl</class>

            <configuration>

                <LegacyClass>your class name</LegacyClass>

            </configuration>

        </public>

...

[EDIT]

Kurzer Hinweis zur Erläuterung: Die neue Schnittstelle für "Dateiname != URL" ist noch nicht freigegeben, daher hier der Weg über "LegacyClass".

Peter
pavone
I'm new here

Hallo Waldemar,

benötigst Du noch weitere Hilfe oder haben Dir Peters Antworten bereits geholfen? In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

Viele Grüße

Tim

0 Kudos

Hallo Tim,

Das ganze hat leider nicht ganz funktioniert. Erst nach den setzen von UseRegistry auf no wurden meine Funktionen die ich implementiert hab aufgerufen.

module.xml:

..

        <public>

            <name>EngsUrlCreator</name>

            <class>de.espirit.firstspirit.generate.UrlCreatorSpecification</class>

            <configuration>

                <LegacyClass>de.***.***.EngsUrlCreator</LegacyClass>

                <UseRegistry>no</UseRegistry>

            </configuration>

        </public>

..

Ich habe die Klasse UrlCreator implementiert:

     public class MyUrlCreator implements UrlCreator

und benutze folgende Funktionen:

  • public String getFilename(ContentProducer contentProducer, TemplateSet templateSet, Language language, PageParams pageParams)
  • public String getFilename(Media media, Language language, Resolution resolution)
  • public String getUrl(ContentProducer contentProducer, Language language, TemplateSet templateSet, PageParams pageParams, int i)
  • public String getUrl(Media media, Language language, Resolution resolution, int i)

Viele Grüße!

Waldi

0 Kudos